日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java中有关文件流的操作

發布時間:2024/8/23 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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代碼.

package IO;import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream;public class dynamicCompile {public static void main(String[] args) throws IOException {String str = "System.out.println(\"hello word!\")";exec(str);}static void exec(String str) throws IOException{//1.獲取源文件File file = new File("file/Hello.java");//2.拼接一個完整的程序StringBuilder sb = new StringBuilder();sb.append("public class Hello {");sb.append("public static void main(String [] args) {").append(str).append(";").append("}}");//3.保存到hello.java文件中OutputStream out = new FileOutputStream(file);byte[] b = new byte[100];out.write(sb.toString().getBytes());out.close();//4.讀取javac進程來編譯hello.javaString command = "javac Hello.java";Process javacProcess = Runtime.getRuntime().exec(command);//5.讀取javac進程中的錯誤流信息InputStream error = javacProcess.getErrorStream();//6. 讀取流中的數據byte[] buffer = new byte[1024];int len = -1;while((len = error.read(buffer)) != -1){String msg = new String(buffer, 0, len);System.out.println(msg);}error.close();//7.調用java進程來運行hello.classProcess javaProcess = Runtime.getRuntime().exec("java Hello");//8.讀取進程中的流信息InputStream info = javaProcess.getInputStream();while((len = info.read(buffer)) !=-1){String msg = new String(buffer, 0, len);System.out.println(msg);}info.close();//9.刪除java和class文件file.delete();} } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的java中有关文件流的操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。