java中有关文件流的操作
生活随笔
收集整理的這篇文章主要介紹了
java中有关文件流的操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文件流: 顧名思義,程序和文件打交道.
此時我們談及的文件,值得是純文本文件(txt的,不要使用Word,Excel),
在字節流中,暫時不要使用中文.
FileInputStream: 文件的字節輸入流
FileOutputStream: 文件的字節輸出流
FileReader:文件的字符輸入流
FileWriter:文件的字符輸出流
文件字符流:
文件的字節流:
FileInputStream:
FileOutputStream:
使用字節流操作漢字或特殊的符號語言的時候,容易亂碼,建議使用字符流.
先有字節流,后有字符流,字符流是對字節流的補充.
使用記事本打開某個文件,可以看到內容的就是文本文件,否則可以理解二進制.
一般的,操作二進制文件(圖片,音頻,視頻等)必須使用字節流.
一般的,操作文本文件使用字符流.
如果不清楚是哪一類型文件,使用字節流.
文件的字符流:
FileReader:
FileWriter:
代碼:
文件字節輸入流:
public static void main(String[] args) throws IOException {File file = new File("file/stream.txt");InputStream in =new FileInputStream(file);File fileCopy = new File("file/streamCopy.txt");OutputStream out = new FileOutputStream(fileCopy);//System.out.println(in.read()); /* int read 讀取一個字節,返回讀取的字節int read(byte[] b)讀取多個字節,并存儲到數組中int read(byte[] b, int off, int len) */byte[] b = new byte[11]; /* * 輸出文件內容方式一* in.read(b);String str = new String(b);System.out.println(str);*///System.out.println(Arrays.toString(b));打印結果為Unicode編碼//輸出文件內容方式二int len = -1;//-1表示文件讀取到最后while((len = in.read(b))!=-1){String str = new String(b,0,len);//文件拷貝out.write(b,0,len);System.out.println(str);}in.close();}文件字節輸出流:
public static void main(String[] args) throws Exception {//文件可以幫我創建但是目錄不能夠幫我們創建,點解file文件夾refresh刷新file文件夾File file = new File("file/stream.txt");//如果文件不存在會自動創建刷新項目文件可以看見出現該文件了//獲取FileOutputStream文件輸出流對象,false表示不追加,true向文件中追加內容OutputStream out = new FileOutputStream(file,false);//在write方法中傳入的參數為int或者是Byte如果傳入的是int常量為65則轉為Aout.write("hello java!".getBytes()); /* write(int b);把一個字節寫出到文件中write(byte[] b, int off, int len);從b數組中的第off位置開始向文件中寫入len位數字*/out.close();} }文件字符輸出流:
package IO;import java.io.File; import java.io.FileReader; import java.io.Reader;public class CharReaderDemo {public static void main(String[] args) throws Exception {//獲取源文件File file = new File("file/aaa.txt");//獲取流對象Reader reader = new FileReader(file);int len = -1;//每次只能讀取5個字符char[] cnt = new char[5];while((len = reader.read(cnt)) != -1){System.out.println(cnt);}} }文件字符輸入流:
package IO;import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Writer;public class CharWriteDemo {public static void main(String[] args) throws IOException {File file = new File("file/aaa.txt");//如果想追加內容設為true,否則或者默認為falseWriter out = new FileWriter(file,true);String str = "我是新添加的字符串";char[] c= str.toCharArray();out.write(c);out.close();} }文件拷貝操作和資源的正確關閉:
文件拷貝:
package IO;import java.io.File; import java.io.FileFilter; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FilenameFilter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList;public class FileCopy {public static void main(String[] args) throws IOException {//獲取源File srcfile = new File("file"); File[] files = srcfile.listFiles(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {return (new File(dir,name).isFile()&&name.endsWith(".txt"));}});File newFile = new File("new/copyFile.txt");OutputStream out = new FileOutputStream(newFile,true);System.out.println("------------寫入操作---------------");for (File file : files) {System.out.println("文件名"+file.getName());InputStream in = new FileInputStream(file);int len = -1;byte[] b = new byte[10];len = in.read(b);while(len != -1){String fileContent = new String(b);System.out.println("文件內容"+fileContent+"有效長度"+len);out.write(b, 0, len);len = in.read(b);}in.close();}InputStream in1 = new FileInputStream(newFile);int len = -1;byte[] B = new byte[1024];System.out.println("----------輸出拷貝后的文件內容-----------------");while((len = in1.read(B)) != -1){String str = new String(B);System.out.println(str);}in1.close();out.close();} }資源的正確關閉:
文件字節流使用案例:
案例1:文件拷貝案例-拷貝指定目錄的指定類型文件到指定目錄.
分析: 比如把C:/java目錄中所有的java文件拷貝到D:/text/把拷貝的所有文件的拓展名改為.txt.
案例2:獲取進程數據-編譯和運行Java代碼.
總結
以上是生活随笔為你收集整理的java中有关文件流的操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【计算几何】线段相交
- 下一篇: mongodb学习笔记之增删改查作指令