Java 字符流讀寫文件


據說,java讀寫文件要寫很多,賊麻煩,不像c艹,幾行代碼就搞定。只能抄抄模板拿來用了。

輸入輸出流分字節流和字符流。先看看字符流的操作,字節轉化為字符也可讀寫。

一、寫入文件

1.FileWriter類:

FileWriter fw=new FileWriter("hello");//在workspace工作空間里創建文件,文件名為hello

FileWriter fw=new FileWriter("E:\\hello");//在E盤創建文件,文件名為hello

FileWriter fw=new FileWriter("E:\\hello.txt");//在E盤創建txt文件hello

如果在相同位置已經有同名文件會覆蓋原來的文件,即一個新建的空文件

如果路徑不對則會拋出異常,例如:java.io.FileNotFoundException: Z:\hello (系統找不到指定的路徑。)

2.BufferedWriter類:

將文本寫入字符輸出流,緩沖字符,以提供單個字符,數組和字符串的高效寫入。可以指定緩沖區大小,或者可以接受默認大小。 默認值足夠大,可用於大多數用途。

 1 import java.io.*;
 2 
 3 public class MyTest9 {
 4     public static void main(String []args) {
 5         try{  
 6             FileWriter fw=new FileWriter("E:\\hello");//在workspace工作空間里創建文件
 7             BufferedWriter bw=new BufferedWriter(fw);//創建bw對象專門為fw對象寫入字符流,fw是某個文件引用(對象)
 8             bw.write("Hello world!\n");  //為文件fw寫入字符
 9             bw.write('\n');//換行
10             bw.write("\n");//換行
11             bw.newLine();//換行,並非所有平台都使用換行符('\ n')來終止行。 因此,調用此方法來終止每個輸出行,因此優選直接寫入換行符。 
12             bw.write("Oh no!\n"); 
13             String s="shoulinniao\n";
14             bw.write(s);
15             bw.write(s,0,5);
16             bw.newLine();
17             char[] s2=new char[10];
18             for(int i=0;i<10;i++)
19                 s2[i]=(char)(i+'0');
20             bw.write(s2);
21             bw.newLine();
22             bw.write(s2,0,8);//從0開始截取,截8個長度,即下標0-7
23             bw.newLine();
24             int a=19;
25             bw.write(a);//數字讀不進去,要轉成字符
26             bw.newLine();
27             bw.write(8);
28             bw.newLine();
29             bw.write(s.valueOf(a));//轉化為字符型
30             bw.close();//不關掉的話duqu.txt里沒東西
31         }catch(Exception ex){  
32             ex.printStackTrace();  
33         }  
34     } 
35 }
寫入文件

二、讀出文件

1.File類:

File(String path);//通過將給定的路徑名字符串轉換為抽象路徑名來創建新的 File實例。

String [] list();//返回一個字符串數組,命名由此抽象路徑名表示的目錄中的文件和目錄。

String getPath();//將此抽象路徑名轉換為路徑名字符串。

Boolean isAbsolute();//判斷是否為絕對路徑

Boolean isDirectory();//判斷是否為目錄

boolean mkdir();//創建由此抽象路徑名命名的目錄。

boolean mkdirs();//創建由此抽象路徑名命名的目錄,包括任何必需但不存在的父目錄。如果目錄存在不會重建空目錄

 1 import java.io.File;
 2 
 3 public class MyTest10{
 4     public static void main(String []args) {
 5         try{  
 6             File ffwq=new File("E:\\");//創建代表路徑的對象,並不是創建一個文件 
 7             
 8             File ff=new File("E:\\new_directory3");  
 9             ff.mkdirs(); //在路徑ff下新建一個目錄目錄名new_directory
10             //打印出目錄下的內容  
11             if(ffwq.isDirectory()){  
12                 String[] de=ffwq.list();  
13                 for(int i=0;i<de.length;i++){  
14                     System.out.println(de[i]);  
15                 }  
16                 System.out.println("---------------------------1");
17                 de=ff.list();  
18                 for(int i=0;i<de.length;i++){  
19                     System.out.println(de[i]);  
20                 }
21             }  
22             System.out.println("---------------------------2");
23             //取的文件的絕對路徑 
24             System.out.println(ff.getAbsolutePath());  
25             //刪除對象代表的文件.如果目錄下有文件也會返回false,刪除不成功也會返回false。  
26             boolean delet=ff.delete(); //目錄下是空的才能刪除,返回true,否則返回false
27             System.out.println(delet);  
28             }catch(Exception ex){  
29                 ex.printStackTrace();  
30             }  
31     }
32 }
File類的一些語法

2.FileReader類:

FileReader(File file);//創建一個新的 FileReader ,給出 File讀取。
FileReader(String fileName);//創建一個新的 FileReader ,給定要讀取的文件的名稱。

3. BufferedReader類:

從字符輸入流讀取文本,緩沖字符,以提供字符,數組和行的高效讀取。可以指定緩沖區大小,或者可以使用默認大小。 默認值足夠大,可用於大多數用途。

BufferedReader(Reader in);//創建使用默認大小的輸入緩沖區的緩沖字符輸入流。
BufferedReader(Reader in, int sz);//創建使用指定大小的輸入緩沖區的緩沖字符輸入流。

void close();//關閉流並釋放與之相關聯的任何系統資源。

String readLine();//讀一行字符

 1 public class MyTest8 {
 2         public static void main(String[] args) {  
 3             ArrayList<String> list = new ArrayList<String>();
 4             try{  
 5                 File f=new File("E:\\hello");//創建文件對象f 
 6                 FileReader fr=new FileReader(f); //fr對象 對應f的讀出
 7                 BufferedReader br=new BufferedReader(fr);//br是 對應fr的 讀出緩沖區
 8                 String shuchu=null;  
 9                 int i=0;
10                 while((shuchu=br.readLine())!=null){  
11                     list.add(shuchu);//用一個數組全部存起來方便修改
12                     System.out.println(shuchu);
13                 }  
14                 for(int j=0;j<list.size();j++)
15                     System.out.println(list.get(j));
16                 br.close();  
17             }catch(Exception ex){  
18                 ex.printStackTrace();  
19             }  
20         }  
21 }

 


免責聲明!

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



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