歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java字符流和字節流對文件操作

記得當初自己剛開始學習Java的時候,對Java的IO流這一塊特別不明白,所以寫了這篇隨筆希望能對剛開始學習Java的人有所幫助,也方便以後自己查詢。Java的IO流分為字符流(Reader,Writer)和字節流(InputStream,OutputStream),字節流顧名思義字節流就是將文件的內容讀取到字節數組,然後再輸出到另一個文件中。而字符流操作的最小單位則是字符。可以先看一下IO流的概述:

 下面首先是通過字符流對文件進行讀取和寫入:

 1 package lib;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.File;
 5 import java.io.FileNotFoundException;
 6 import java.io.FileReader;
 7 import java.io.FileWriter;
 8 import java.io.IOException;
 9 import java.io.PrintWriter;
10 
11 public class Test {
12     // 定義文件路徑
13     File f = new File("F:\\test.txt");
14     //字符流寫入的方法
15     public String writeInFile() throws IOException{
16         String str = "";
17         String count = "";
18         try {
19             // 使用字符流對文件進行讀取
20             BufferedReader bf = new BufferedReader(new FileReader(f));
21             while (true) {
22                 //讀取每一行數據並將其賦值給str
23                 if ((count = bf.readLine()) != null) {
24                     str += count;
25                 } else {
26                     break;
27                 }
28             }
29             // 關閉流
30             bf.close();
31         } catch (FileNotFoundException e) {
32             e.printStackTrace();
33         }
34         return str;
35     }
36     //字符流讀取的方法
37     public  void getReader(){
38         try {
39             //其中true表示在原本文件內容的尾部添加,若不寫則表示清空文件後再添加內容
40             PrintWriter pw=new PrintWriter(new FileWriter(f,true));
41             pw.write("測試輸入字符串到文件中2");
42             pw.close();
43         } catch (IOException e) {
44             e.printStackTrace();
45         }
46     }
47     public static void main(String[] args) throws IOException {
48         Test test=new Test();
49         //將字符串輸入到文件中
50         test.getReader();
51         //讀取相對應的字符串
52         String str=test.writeInFile();
53         //將文件中內容在控制台輸出
54         System.out.println("文件內容為:"+str);
55     }
56 }

上述代碼的關鍵地方都有注釋,就不再一一贅述了,主要就是在使用完流之後不要忘記關閉就好(行30,行42)

然後是通過字節流的方式對文件進行操作,將一個文件中的內容復制到另一個文件中:

 1 package com.file.test2;
 2 
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 import java.io.FileNotFoundException;
 6 import java.io.FileOutputStream;
 7 import java.io.IOException;
 8 
 9 public class TestFile2 {
10     //使用字節流讀取並寫入文件,將一個文件復制到另一個文件中
11     public static void main(String[] args) throws IOException {
12         //要復制的源文件
13         File f=new File("D:\\test.txt");
14         //目標文件
15         File f2=new File("D:\\test2.txt");
16         //定義一個byte類型的數組,用於存儲讀取到的內容
17         byte [] b=new byte[1024];
18         int length;
19         try {
20             //定義讀取的流
21             FileInputStream in=new FileInputStream(f);
22             //定義輸出到文件的流
23             FileOutputStream out=new FileOutputStream(f2);
24             //將文件內容輸出到另一個文件中
25             while((length=in.read(b))!=-1){
26                 out.write(b, 0, length);
27             }
28             out.close();
29             in.close();
30         } catch (FileNotFoundException e) {
31             e.printStackTrace();
32         }
33     }
34 }

在字節流的操作中,第13行的源文件必須存在,可以根據需要自行更改文件路徑,只需要存在即可,否則會報文件找不到的錯誤,同時若想在控制台輸出讀取到的字節流的內容則可以在第27和28行之間加兩句代碼:in.read(b, 0, b.length);System.out.println(new String(b));

以上就是字符流和字節流的相關操作,其實代碼不難,主要是自己的理解,相同的問題每個人都會有不同的理解方式,當然,對於我們編程人員來說,除了要多思考之外還要多動手。最後希望以上內容能對大家有所幫助

Copyright © Linux教程網 All Rights Reserved