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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java读写文件大全

發布時間:2025/4/14 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java读写文件大全 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
使用Java操作文本文件的方法詳解 【http://blog.csdn.net/smartcat86/article/details/4085739/】
摘要: 最初java是不支持對文本文件的處理的,為了彌補這個缺憾而引入了Reader和Writer兩個類?
最初java是不支持對文本文件的處理的,為了彌補這個缺憾而引入了Reader和Writer兩個類,這兩個類都是抽象類,Writer中 write(char[] ch,int off,int length),flush()和close()方法為抽象方法,Reader中read(char[] ch,int off,int length)和close()方法是抽象方法。子類應該分別實現他們。 當我們讀寫文本文件的時候,采用Reader是非常方便的,比如FileReader,InputStreamReader和BufferedReader。其中最重要的類是InputStreamReader, 它是字節轉換為字符的橋梁。你可以在構造器重指定編碼的方式,如果不指定的話將采用底層操作系統的默認編碼方式,例如GBK等。當使用FileReader讀取文件 的時候。 [java]?view plaincopy
  • FileReader?fr?=?new?FileReader("ming.txt");??
  • int?ch?=?0;??
  • while((ch?=?fr.read())!=-1?)??
  • {??
  • System.out.print((char)ch);??
  • }??

  • 其中read()方法返回的是讀取得下個字符。當然你也可以使用read(char[] ch,int off,int length)這和處理二進制文件的時候類似,不多說了。如果使用 InputStreamReader來讀取文件的時候 while((ch = isr.read())!=-1)
    {
    System.out.print((char)ch);?
    }
    這和FileReader并沒有什么區別,事實上在FileReader中的方法都是從InputStreamReader中繼承過來的。read()方法是比較好費時間的,如果為了提高效率 我們可以使用BufferedReader對Reader進行包裝,這樣可以提高讀取得速度,我們可以一行一行的讀取文本,使用readLine()方法。 BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("ming.txt")));
    String data = null;
    while((data = br.readLine())!=null)
    {
    System.out.println(data);?
    }
    當你明白了如何用Reader來讀取文本文件的時候那么用Writer寫文件同樣非常簡單。有一點需要注意,當你寫文件的時候,為了提高效率,寫入的數據會先 放入緩沖區,然后寫入文件。因此有時候你需要主動調用flush()方法。與上面對應的寫文件的方法為:
    [java]?view plaincopy
  • FileWriter?fw?=?new?FileWriter("hello.txt");??
  • String?s?=?"hello?world";??
  • fw.write(s,0,s.length());??
  • fw.flush();??
  • OutputStreamWriter?osw?=?new?OutputStreamWriter(new?FileOutputStream("hello2.txt"));??
  • osw.write(s,0,s.length());??
  • osw.flush();??
  • PrintWriter?pw?=?new?PrintWriter(new?OutputStreamWriter(new?FileOutputStream("hello3.txt")),true);??
  • pw.println(s);??

  • 不要忘記用完后關閉流!下面是個小例子,幫助新手理解。其實有的時候java的IO系統是需要我們多記記的,不然哪天就生疏了。
    [java]?view plaincopy
  • import?java.io.*;??
  • public?class?TestFile2??
  • {??
  • public?static?void?main(String[]?args)?throws?IOException??
  • {??
  • FileReader?fr?=?new?FileReader("ming.txt");??
  • char[]?buffer?=?new?char[1024];??
  • int?ch?=?0;??
  • while((ch?=?fr.read())!=-1?)??
  • {??
  • System.out.print((char)ch);??
  • }??
  •   InputStreamReader?isr?=?new?InputStreamReader(new?FileInputStream("ming.txt"));??
  • while((ch?=?isr.read())!=-1)??
  • {??
  • System.out.print((char)ch);??
  • }??
  •   BufferedReader?br?=?new?BufferedReader(new?InputStreamReader(new?FileInputStream("ming.txt")));??
  • String?data?=?null;??
  • while((data?=?br.readLine())!=null)??
  • {??
  • System.out.println(data);??
  • }??
  •   FileWriter?fw?=?new?FileWriter("hello.txt");??
  • String?s?=?"hello?world";??
  • fw.write(s,0,s.length());??
  • fw.flush();??
  •   OutputStreamWriter?osw?=?new?OutputStreamWriter(new?FileOutputStream("hello2.txt"));??
  • osw.write(s,0,s.length());??
  • osw.flush();??
  •   PrintWriter?pw?=?new?PrintWriter(new?OutputStreamWriter(new?FileOutputStream("hello3.txt")),true);??
  • pw.println(s);??
  •   fr.close();??
  • isr.close();??
  • br.close();??
  • fw.close();??
  • osw.close();??
  • pw.close();??
  • }??
  • }??
  • java中多種方式讀文件
    一、多種方式讀文件內容。
    1、按字節讀取文件內容
    2、按字符讀取文件內容
    3、按行讀取文件內容
    4、隨機讀取文件內容

    [java]?view plaincopy
  • import?java.io.BufferedReader;??
  • import?java.io.File;??
  • import?java.io.FileInputStream;??
  • import?java.io.FileReader;??
  • import?java.io.IOException;??
  • import?java.io.InputStream;??
  • import?java.io.InputStreamReader;??
  • import?java.io.RandomAccessFile;??
  • import?java.io.Reader;??
  • public?class?ReadFromFile?{??
  • /**?
  • *?以字節為單位讀取文件,常用于讀二進制文件,如圖片、聲音、影像等文件。?
  • *?@param?fileName?文件的名?
  • */??
  • public?static?void?readFileByBytes(String?fileName){??
  • File?file?=?new?File(fileName);??
  • InputStream?in?=?null;??
  • try?{??
  • System.out.println("以字節為單位讀取文件內容,一次讀一個字節:");??
  • //?一次讀一個字節??
  • in?=?new?FileInputStream(file);??
  • int?tempbyte;??
  • while((tempbyte=in.read())?!=?-1){??
  • System.out.write(tempbyte);??
  • }??
  • in.close();??
  • }?catch?(IOException?e)?{??
  • e.printStackTrace();??
  • return;??
  • }??
  • try?{??
  • System.out.println("以字節為單位讀取文件內容,一次讀多個字節:");??
  • //一次讀多個字節??
  • byte[]?tempbytes?=?new?byte[100];??
  • int?byteread?=?0;??
  • in?=?new?FileInputStream(fileName);??
  • ReadFromFile.showAvailableBytes(in);??
  • //讀入多個字節到字節數組中,byteread為一次讀入的字節數??
  • while?((byteread?=?in.read(tempbytes))?!=?-1){??
  • System.out.write(tempbytes,?0,?byteread);??
  • }??
  • }?catch?(Exception?e1)?{??
  • e1.printStackTrace();??
  • }?finally?{??
  • if?(in?!=?null){??
  • try?{??
  • in.close();??
  • }?catch?(IOException?e1)?{??
  • }??
  • }??
  • }??
  • }??
  • /**?
  • *?以字符為單位讀取文件,常用于讀文本,數字等類型的文件?
  • *?@param?fileName?文件名?
  • */??
  • public?static?void?readFileByChars(String?fileName){??
  • File?file?=?new?File(fileName);??
  • Reader?reader?=?null;??
  • try?{??
  • System.out.println("以字符為單位讀取文件內容,一次讀一個字節:");??
  • //?一次讀一個字符??
  • reader?=?new?InputStreamReader(new?FileInputStream(file));??
  • int?tempchar;??
  • while?((tempchar?=?reader.read())?!=?-1){??
  • //對于windows下,rn這兩個字符在一起時,表示一個換行。??
  • //但如果這兩個字符分開顯示時,會換兩次行。??
  • //因此,屏蔽掉r,或者屏蔽n。否則,將會多出很多空行。??
  • if?(((char)tempchar)?!=?'r'){??
  • System.out.print((char)tempchar);??
  • }??
  • }??
  • reader.close();??
  • }?catch?(Exception?e)?{??
  • e.printStackTrace();??
  • }??
  • try?{??
  • System.out.println("以字符為單位讀取文件內容,一次讀多個字節:");??
  • //一次讀多個字符??
  • char[]?tempchars?=?new?char[30];??
  • int?charread?=?0;??
  • reader?=?new?InputStreamReader(new?FileInputStream(fileName));??
  • //讀入多個字符到字符數組中,charread為一次讀取字符數??
  • while?((charread?=?reader.read(tempchars))!=-1){??
  • //同樣屏蔽掉r不顯示??
  • if?((charread?==?tempchars.length)&&(tempchars[tempchars.length-1]?!=?'r')){??
  • System.out.print(tempchars);??
  • }else{??
  • for?(int?i=0;?i<charread;?i++){??
  • if(tempchars[i]?==?'r'){??
  • continue;??
  • }else{??
  • System.out.print(tempchars[i]);??
  • }??
  • }??
  • }??
  • }??
  • }?catch?(Exception?e1)?{??
  • e1.printStackTrace();??
  • }finally?{??
  • if?(reader?!=?null){??
  • try?{??
  • reader.close();??
  • }?catch?(IOException?e1)?{??
  • }??
  • }??
  • }??
  • }??
  • /**?
  • *?以行為單位讀取文件,常用于讀面向行的格式化文件?
  • *?@param?fileName?文件名?
  • */??
  • public?static?void?readFileByLines(String?fileName){??
  • File?file?=?new?File(fileName);??
  • BufferedReader?reader?=?null;??
  • try?{??
  • System.out.println("以行為單位讀取文件內容,一次讀一整行:");??
  • reader?=?new?BufferedReader(new?FileReader(file));??
  • String?tempString?=?null;??
  • int?line?=?1;??
  • //一次讀入一行,直到讀入null為文件結束??
  • while?((tempString?=?reader.readLine())?!=?null){??
  • //顯示行號??
  • System.out.println("line?"?+?line?+?":?"?+?tempString);??
  • line++;??
  • }??
  • reader.close();??
  • }?catch?(IOException?e)?{??
  • e.printStackTrace();??
  • }?finally?{??
  • if?(reader?!=?null){??
  • try?{??
  • reader.close();??
  • }?catch?(IOException?e1)?{??
  • }??
  • }??
  • }??
  • }??
  • /**?
  • *?隨機讀取文件內容?
  • *?@param?fileName?文件名?
  • */??
  • public?static?void?readFileByRandomAccess(String?fileName){??
  • RandomAccessFile?randomFile?=?null;??
  • try?{??
  • System.out.println("隨機讀取一段文件內容:");??
  • //?打開一個隨機訪問文件流,按只讀方式??
  • randomFile?=?new?RandomAccessFile(fileName,?"r");??
  • //?文件長度,字節數??
  • long?fileLength?=?randomFile.length();??
  • //?讀文件的起始位置??
  • int?beginIndex?=?(fileLength?>?4)???4?:?0;??
  • //將讀文件的開始位置移到beginIndex位置。??
  • randomFile.seek(beginIndex);??
  • byte[]?bytes?=?new?byte[10];??
  • int?byteread?=?0;??
  • //一次讀10個字節,如果文件內容不足10個字節,則讀剩下的字節。??
  • //將一次讀取的字節數賦給byteread??
  • while?((byteread?=?randomFile.read(bytes))?!=?-1){??
  • System.out.write(bytes,?0,?byteread);??
  • }??
  • }?catch?(IOException?e){??
  • e.printStackTrace();??
  • }?finally?{??
  • if?(randomFile?!=?null){??
  • try?{??
  • randomFile.close();??
  • }?catch?(IOException?e1)?{??
  • }??
  • }??
  • }??
  • }??
  • /**?
  • *?顯示輸入流中還剩的字節數?
  • *?@param?in?
  • */??
  • private?static?void?showAvailableBytes(InputStream?in){??
  • try?{??
  • System.out.println("當前字節輸入流中的字節數為:"?+?in.available());??
  • }?catch?(IOException?e)?{??
  • e.printStackTrace();??
  • }??
  • }??
  • public?static?void?main(String[]?args)?{??
  • String?fileName?=?"C:/temp/newTemp.txt";??
  • ReadFromFile.readFileByBytes(fileName);??
  • ReadFromFile.readFileByChars(fileName);??
  • ReadFromFile.readFileByLines(fileName);??
  • ReadFromFile.readFileByRandomAccess(fileName);??
  • }??
  • }??
  • 二、將內容追加到文件尾部??
  • import?java.io.FileWriter;??
  • import?java.io.IOException;??
  • import?java.io.RandomAccessFile;??
  • /**?
  • *?將內容追加到文件尾部?
  • */??
  • public?class?AppendToFile?{??
  • /**?
  • *?A方法追加文件:使用RandomAccessFile?
  • *?@param?fileName?文件名?
  • *?@param?content?追加的內容?
  • */??
  • public?static?void?appendMethodA(String?fileName,??
  • ??
  • String?content){??
  • try?{??
  • //?打開一個隨機訪問文件流,按讀寫方式??
  • RandomAccessFile?randomFile?=?new?RandomAccessFile(fileName,?"rw");??
  • //?文件長度,字節數??
  • long?fileLength?=?randomFile.length();??
  • //將寫文件指針移到文件尾。??
  • randomFile.seek(fileLength);??
  • randomFile.writeBytes(content);??
  • randomFile.close();??
  • }?catch?(IOException?e){??
  • e.printStackTrace();??
  • }??
  • }??
  • /**?
  • *?B方法追加文件:使用FileWriter?
  • *?@param?fileName?
  • *?@param?content?
  • */??
  • public?static?void?appendMethodB(String?fileName,?String?content){??
  • try?{??
  • //打開一個寫文件器,構造函數中的第二個參數true表示以追加形式寫文件??
  • FileWriter?writer?=?new?FileWriter(fileName,?true);??
  • writer.write(content);??
  • writer.close();??
  • }?catch?(IOException?e)?{??
  • e.printStackTrace();??
  • }??
  • }??
  • public?static?void?main(String[]?args)?{??
  • String?fileName?=?"C:/temp/newTemp.txt";??
  • String?content?=?"new?append!";??
  • //按方法A追加文件??
  • AppendToFile.appendMethodA(fileName,?content);??
  • AppendToFile.appendMethodA(fileName,?"append?end.?n");??
  • //顯示文件內容??
  • ReadFromFile.readFileByLines(fileName);??
  • //按方法B追加文件??
  • AppendToFile.appendMethodB(fileName,?content);??
  • AppendToFile.appendMethodB(fileName,?"append?end.?n");??
  • //顯示文件內容??
  • ReadFromFile.readFileByLines(fileName);??
  • }??
  • }??
  • 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

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

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