Java实现对文件的读写操作
生活随笔
收集整理的這篇文章主要介紹了
Java实现对文件的读写操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
實現對文件進行讀寫
- 使用PrintWriter對文件進行寫操作
- 使用Scanner對文件進行讀操作
- 使用緩沖設計對文件進行讀寫操作
使用PrintWriter對文件進行寫操作
java.io.PrintWriter類可用來創建一個文件并向文件中寫入數據,首先必須先為文件創建一個PrintWriter對象。
File file = new File("text.java"); PrintWriter put = new PrintWriter(file);調用Printwriter的構造方法,如果文件不存在,則會在當前目錄下創建一個新文件。如果文件已經存在,那么文件中的當前內容將在不與用戶確認的情況下被格式化。
注:
- 在Windows系統中目錄的分割符為反斜杠(\),但是在程序語言中反斜杠是一個特殊字符(轉義字符),因此在程序中應寫成\\的形式。此外,也可使用斜杠(/),這樣在Windows、UNIX或其他任何系統上都能夠工作
- 在程序中,盡量不要直接使用絕對文件名。如果使用了像(“D:\\Users\\lenovo\\eclipse-workspace\\demo\\text.java”)
之類的文件名,那么它能在Windows上工作,但是不能在其他平臺上工作,導致兼容性差。推薦使用相對文件名,例如,可以使用new File(“text.java”)為當前目錄下的文件text.java創建一個File對象。
此處提到的相對文件名和絕對文件名區別如下:
- 絕對文件名(absolute file name)是由文件名和它的完整路徑以及驅動器字母組成。例如,C:\book\Welcome.java是文件Welcome.java在Windows操作系統上的絕對文件名。
- 相對文件名是相對于當前工作目錄的。對于相對文件名而言,完整目錄被忽略。例如Welcome.java是一個相對文件名。如果當前工作目錄是C:\book,絕對文件名將是C:\book\Welcome.java 。
代碼如下:
import java.io.*; import java.util.Scanner; public class TestFile {public static void main(String[] args) throws IOException{// TODO 自動生成的方法存根Scanner in = new Scanner(System.in);File file = new File("text.java");//相對文件名if(file.exists()) {System.out.println("File already exists!");//System.exit(1);//如果存在,(正常)退出該程序}PrintWriter put = new PrintWriter(file);while(!in.hasNext("END")) {/** 執行hasNext()時,它會先掃描緩沖區中是否有字符,有則返回true,* 繼續掃描。直到掃描為空,這時并不返回false,* 而是將方法阻塞,等待你輸入內容然后繼續掃描* 因此此處不建議使用while(in.hasNext())*/String str = in.nextLine();put.println("Good morning!"); //寫入內容的同時換行put.println(str);}/*PrintWriter put = new PrintWriter(file);若文件存在則直接寫入(文件內容將在不與用戶確認的情況下被丟棄)若文件不存在則在當前目錄下(eclipse-workspace\demo)創建新文件(text.java)*/in.close();put.close();System.out.println("文件絕對路徑名:"+file.getAbsolutePath());} }
調用PrintWriter的構造方法時可能會拋出一個I/O異常,Java強制要求編寫代碼來處理這類異常(即使用try{}catch{}來檢測處理異常),但此處為簡單起見只需在方法頭聲明throws IOException。
使用Scanner對文件進行讀操作
Java.util.Scanner類用于從控制臺讀取字符串和基本類型值。為了從文件中讀取內容,需為文件創建一個Scanner,如下:
File file = new File("text.java"); Scanner input = new Scanner(file);完整代碼如下:
//讀文件:File file = new File("text.java");//相對文件名Scanner input = new Scanner(file);while(input.hasNext()) {String s = input.nextLine();System.out.println(s);}input.close();結果如下:
使用緩沖設計對文件進行讀寫操作
完整代碼如下:
import java.io.*; import java.util.Scanner;public class Mod8_Mod9 { public static void main(String args[]) { try { Scanner in = new Scanner(System.in);File file = new File("text.txt");BufferedWriter out = new BufferedWriter(new FileWriter(file));//FileWriter()向文件寫入數據//out為字符緩沖輸出流對象System.out.println("輸入內容:");while(!in.hasNext("END")) {/** 執行hasNext()時,它會先掃描緩沖區中是否有字符,有則返回true,* 繼續掃描。直到掃描為空,這時并不返回false,* 而是將方法阻塞,等待你輸入內容然后繼續掃描。*/String str = in.nextLine();//String str1 = str+"\r\n";out.write(str);out.newLine();//換行//out.flush();} //刷新緩沖流// 手動把緩存區內容壓入文件,否則直接調用.close()后會造成緩沖區未填滿的數據丟失in.close();out.close(); //關閉輸入流釋放內存,同時釋放文件 } catch (Exception e) { e.printStackTrace(); }System.out.println("文件內容為:");try{File file = new File("text.txt");FileInputStream fis = new FileInputStream(file);//實例化FileInputStream()對象,并直接傳入已打開文件的File對象InputStreamReader is = new InputStreamReader(fis);//InputStreamReader用于將字節流中的字節碼解碼成字符BufferedReader br = new BufferedReader(is);//BufferedReader類從字符輸入流中讀取文本并緩沖字符//以便有效地讀取字符、數組和行String txtLine = null; while((txtLine=br.readLine())!=null){ //按行讀取字符串System.out.println(txtLine); }br.close();System.out.println("路徑:"+file.getAbsolutePath());}catch (FileNotFoundException e1) { //異常處理System.err.println("File not found!");}catch(Exception e2){e2.printStackTrace();}} }運行截圖:
總結
以上是生活随笔為你收集整理的Java实现对文件的读写操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VB如何只读取字符串中的数字部分??
- 下一篇: delphi编程实现免杀捆绑