Java IO如何讀寫檔案

來源:互聯網
上載者:User

標籤:注意   讀取資料   實現   edr   ack   str   字元   ade   接受   

  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();

四、FileReader、FileWriter(提供少量的文本讀取和寫入文本)

try{    //使用FileWriter類寫文字檔    FileWriter writer=new FileWriter(fileName);    writer.write("Hello Kuka:\n");    writer.write("  My name is coolszy!\n");    writer.write("  I like you and miss you。");    writer.close();} catch (IOException e){    e.printStackTrace();}try{    //使用FileWriter類往文字檔中追加資訊    FileWriter writer = new FileWriter(fileName, true);    SimpleDateFormat format = new SimpleDateFormat();    String time = format.format(new Date());    writer.write("\n\t" + time);    writer.close();} catch(IOException e){    e.printStackTrace();}int c=0;try{    //使用FileReader類讀文字檔    FileReader reader=new FileReader(fileName);    c=reader.read();    while(c!=-1) {        System.out.print((char)c);        c=reader.read();    }    reader.close();} catch (Exception e) {    e.printStackTrace();}

五、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();  //注意\n不一定在各種電腦上都能產生換行的效果
} //清楚緩衝 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();

Java IO如何讀寫檔案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.