轉載于:https://www.cnblogs.com/ll409546297/p/7197911.html
java.io幾種讀寫文件的方式
一、Java把這些不同來源和目標的數據都統一抽象為數據流。
Java語言的輸入輸出功能是十分強大而靈活的。
在Java類庫中,IO部分的內容是很龐大的,因為它涉及的領域很廣泛:標準輸入輸出,文件的操作,網絡上的數據流,字符串流,對象流,zip文件流。
這里介紹幾種讀寫文件的方式
二、InputStream、OutputStream(字節流)
//讀取文件(字節流)InputStream in = new FileInputStream("d:\\1.txt");//寫入相應的文件OutputStream out = new FileOutputStream("d:\\2.txt");//讀取數據//一次性取多少字節byte[] bytes = new byte[2048];//接受讀取的內容(n就代表的相關數據,只不過是數字的形式)int n = -1;//循環取出數據while ((n = in.read(bytes,0,bytes.length)) != -1) {//轉換成字符串String str = new String(bytes,0,n,"GBK"); #這里可以實現字節到字符串的轉換,比較實用System.out.println(str);//寫入相關文件out.write(bytes, 0, n);}//關閉流in.close();out.close();
三、BufferedInputStream、BufferedOutputStream(緩存字節流)使用方式和字節流差不多,但是效率更高(推薦使用)
//讀取文件(緩存字節流)BufferedInputStream in = new BufferedInputStream(new FileInputStream("d:\\1.txt"));//寫入相應的文件BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("d:\\2.txt"));//讀取數據//一次性取多少字節byte[] bytes = new byte[2048];//接受讀取的內容(n就代表的相關數據,只不過是數字的形式)int n = -1;//循環取出數據while ((n = in.read(bytes,0,bytes.length)) != -1) {//轉換成字符串String str = new String(bytes,0,n,"GBK");System.out.println(str);//寫入相關文件out.write(bytes, 0, n);}//清楚緩存out.flush();//關閉流in.close();out.close();
四、InputStreamReader、OutputStreamWriter(字符流,這種方式不建議使用,不能直接字節長度讀寫)。使用范圍用做字符轉換
//讀取文件(字節流)InputStreamReader in = new InputStreamReader(new FileInputStream("d:\\1.txt"),"GBK");//寫入相應的文件OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream("d:\\2.txt"));//讀取數據//循環取出數據byte[] bytes = new byte[1024];int len = -1;while ((len = in.read()) != -1) {System.out.println(len);//寫入相關文件out.write(len);}//清楚緩存out.flush();//關閉流in.close();out.close();
五、BufferedReader、BufferedWriter(緩存流,提供readLine方法讀取一行文本)
//讀取文件(字符流)BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("d:\\1.txt"),"GBK"));#這里主要是涉及中文//BufferedReader in = new BufferedReader(new FileReader("d:\\1.txt")));//寫入相應的文件BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("d:\\2.txt"),"GBK"));//BufferedWriter out = new BufferedWriter(new FileWriter("d:\\2.txt"));//讀取數據//循環取出數據String str = null;while ((str = in.readLine()) != null) {System.out.println(str);//寫入相關文件out.write(str);out.newLine();}//清楚緩存out.flush();//關閉流in.close();out.close();
六、Reader、PrintWriter(PrintWriter這個很好用,在寫數據的同事可以格式化)
//讀取文件(字節流)Reader in = new InputStreamReader(new FileInputStream("d:\\1.txt"),"GBK");//寫入相應的文件PrintWriter out = new PrintWriter(new FileWriter("d:\\2.txt"));//讀取數據//循環取出數據byte[] bytes = new byte[1024];int len = -1;while ((len = in.read()) != -1) {System.out.println(len);//寫入相關文件out.write(len);}//清楚緩存out.flush();//關閉流in.close();out.close();
七、基本的幾種用法就這么多,當然每一個讀寫的使用都是可以分開的。為了更好的來使用io。流里面的讀寫,建議使用BufferedInputStream、BufferedOutputStream