37、使用FileInputStream和FileOutputStream讀取和寫入


絕對路徑和相對路徑

  • 絕對路徑:指文件在硬盤上真正存在的路徑,比如:D:\Java\HelloWorld.java,這個指的是在電腦的d盤下的Java文件夾里面有個HelloWorld.java文件
  • 相對路徑:指某個文件的路徑和別的文件的路徑關系,比如在d盤里面有個兩個文件,路徑分別是:D:\Java\HelloWorld.java和D:\Java\images\monkey.png。他們都在d盤中的Java文件夾里面,其中monkey.png這個文件的路徑相對HelloWorld.java來說就是\images\monkey.png

使用FileInputStream讀取文件中的內容

在項目的根目錄里面創建一個file文件夾,在這個文件夾里面再創建monkey.txt的文本文件,然后在里面寫上abc這三個字母,保存關閉。
下面通過FileInputStream將硬盤中的monkey.txt文件中的內容讀取到內存當中並在控制台打印,操作結束之后注意關閉流釋放資源,這里相當於在內存和硬盤之間放一個梯子,在將硬盤中的文件全部讀取到內存之后,需要拿掉梯子,否則會浪費資源。

package com.sutaoyu.IO;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class IO_test_2 {
    public static void main(String[] args) {
        FileInputStream fis = null;
        try {
            //絕對路徑,需要加轉義字符
            //fis = new FileInputStream("F:\\monkey1024\\01-JavaSE\\代碼\\code\\chapter-08\\file\\monkey.txt");
            //相對路徑
            fis = new FileInputStream("file\\monkey.txt");
            //定義byte數組每次讀取三個字節提高效率
            byte[] bytes = new byte[3];
            
            int temp;
            //如果返回-1則說明讀取完畢
            while((temp = fis.read(bytes)) != -1) {
                System.out.println(new String(bytes,0,temp));
            }
        }catch(FileNotFoundException e) {
            e.printStackTrace();
        }catch(IOException e) {
            e.printStackTrace();
        }finally {
            try {
                fis.close();
            }catch(IOException e) {
                e.printStackTrace();
            }
        }
    }
}

使用FileOutputStream向文件寫出內容

向1024.txt文件中寫出字母

在windos中的文件路徑是以”\”來分隔
在linux中的文件路徑是以”/”來分隔
如果將上面代碼部署到linux中會讀取不到文件,為了保證編寫的代碼跨平台需要使用java.io包下的File.separator來替代文件路徑的分隔符,如下:

fis = new FileInputStream("file\\monkey.txt");

修改為

fis = new FileInputStream("file" + File.separator + "monkey.txt");

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM