Java文件讀取和寫入操作

在Java開發中,文件的讀取和寫入是非常常見的操作。Java提供了很多種方式來進行文件的讀取和寫入,如:位元組流和字符流,輸入/輸出流,NIO和NIO2等。通過這些方式,可以輕鬆地實現對文件的操作,如:讀取文本、圖片、音頻等各種格式的文件,或者將數據寫入到文件中。

一、基本的文件讀取和寫入

Java中最基本的文件讀取和寫入方式是通過Java IO提供的FileInputStream和FileOutputStream實現。FileInputStream用於讀取文件中的數據,FileOutputStream用於將數據寫入到文件中。以下是基本的文件讀取和寫入操作代碼:

// 讀取文件
File file1 = new File("file.txt");
FileInputStream fis = new FileInputStream(file1);
byte[] content = new byte[(int)file1.length()];
fis.read(content);
fis.close();
System.out.println(new String(content));
            
// 寫入文件
File file2 = new File("file.txt");
FileOutputStream fos = new FileOutputStream(file2);
String content = "Hello World!";
fos.write(content.getBytes());
fos.close();

以上代碼為讀取和寫入一個名為「file.txt」的文件,讀取時使用位元組數組作為緩存區讀取文件中的數據,寫入時先將字符串轉換為位元組數組,再進行寫入操作。兩種操作都要及時關閉文件流。

二、使用BufferedReader和BufferedWriter讀寫文件

除了使用基本的位元組流和字符流進行文件讀寫操作外,還可以使用Java IO提供的BufferedReader和BufferedWriter,它們可以提供更高效的讀寫操作。以下是使用緩衝區進行讀寫操作的示例代碼:

// 讀取文件
File file1 = new File("file.txt");
BufferedReader reader = new BufferedReader(new FileReader(file1));
String line = null;
while((line = reader.readLine()) != null){
    System.out.println(line);
}
reader.close();

// 寫入文件
File file2 = new File("file.txt");
BufferedWriter writer = new BufferedWriter(new FileWriter(file2));
String content = "Hello World!";
writer.write(content);
writer.newLine();
writer.close();

以上代碼中,我們通過BufferedReader和BufferedWriter使用緩存區實現了文件的讀取和寫入操作。BufferedReader通過readLine()方法讀取文件中的每一行數據,而BufferedWriter需要手動添加一個換行符來分隔每一行數據。

三、使用Scanner讀取文件

除了以上兩種方式,還可以使用Java提供的Scanner來讀取文件。Scanner相當於一個讀取器,它可以讀取任何數據類型。以下是使用Scanner讀取文件的示例代碼:

// 讀取文件
File file1 = new File("file.txt");
Scanner scanner = new Scanner(file1);
while(scanner.hasNextLine()){
    System.out.println(scanner.nextLine());
}
scanner.close();

// 寫入文件
File file2 = new File("file.txt");
PrintWriter writer = new PrintWriter(file2);
String content = "Hello World!";
writer.println(content);
writer.close();

以上代碼中,我們使用Scanner讀取文件中的每一行數據,而在寫入文件時,則是使用了PrintWriter。

四、使用NIO讀寫文件

如果需要處理大型文件或者需要實現更高效的文件讀寫操作,可以使用Java提供的NIO庫。NIO可以以非阻塞IO方式讀寫文件,減少了線程的等待時間,提高了效率。以下是NIO讀寫文件的示例代碼:

// 讀取文件
Path path1 = Paths.get("file.txt");
ByteBuffer buffer = ByteBuffer.allocate(1024);
FileChannel channel1 = FileChannel.open(path1);
channel1.read(buffer);
buffer.flip();
String content = StandardCharsets.UTF_8.decode(buffer).toString();
channel1.close();

// 寫入文件
Path path2 = Paths.get("file.txt");
ByteBuffer buffer = StandardCharsets.UTF_8.encode("Hello World!");
FileChannel channel2 = FileChannel.open(path2, StandardOpenOption.WRITE, StandardOpenOption.CREATE);
channel2.write(buffer);
channel2.close();

以上代碼使用NIO的ByteBuffer讀寫文件,通過調用FileChannel的read()方法讀取文件中的數據,使用StandardCharsets實現了字符集轉換;寫入文件時,同樣使用FileChannel的write()方法向文件中寫入數據。

五、使用NIO2讀寫文件

Java 7中引入了NIO2,它基於NIO,提供了更簡潔的API。以下是NIO2讀寫文件的示例代碼:

// 讀取文件
Path path1 = Paths.get("file.txt");
List content = Files.readAllLines(path1, StandardCharsets.UTF_8);
System.out.println(content);

// 寫入文件
Path path2 = Paths.get("file.txt");
List lines = Arrays.asList("Hello", "World");
Files.write(path2, lines, StandardCharsets.UTF_8);

以上代碼使用NIO2的Files類進行文件的讀取和寫入操作,首先使用readAllLines()方法讀取文件中的所有行,然後使用Files的write()方法將字符串列表寫入到文件中。

六、總結

以上就是Java文件讀取和寫入操作的幾種方式。每種方式都適用於不同的場景,我們可以根據實際需要來選擇使用哪一種。在使用文件讀寫時,需要注意及時關閉文件流,避免出現資源泄漏。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/197332.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-03 13:29
下一篇 2024-12-03 13:29

相關推薦

發表回復

登錄後才能評論