JAVA學習——IO操作(三)

JAVA學習——IO操作(三)


因爲大部分時間是對文件的操作,所以在此以對文件的操作爲例介紹一下IO程序的基本步驟。

基本步驟總結如下:

1、  創建IO對象(在創建對象的過程中要注意指定目的文件,一般是通過構造函數,所以瞭解各個IO類的構造函數很重要)

2、 調用IO對象對應的IO方法(read(),write()等)將數據寫入輸入或輸出流,IO方法有很多重載形式,需要按需選擇。

3、 調用Flush方法或close()方法,對流中的數據進行刷新,以達到將數據寫入目的文件的效果。(Flush方法與close()     方法的區別:flush刷新後可以繼續使用而流不被關閉,close刷新後,會將流關閉)

4、 最後要將流關閉,做法是調用close()方法。(在這裏我有一個疑問,使用標準輸入輸出System.in 與 system.out時,是沒有顯式的刷新和關閉流操作的,是被封裝了嗎?)

示例程序一:

package com.abin;

import java.io.FileWriter;

import java.io.IOException;

public class FileWriterDemo {

  public static void main(String[] args){

      //創建一個filewriter對象,該對象被初始化需要指定被操作的文件。

      //初始化函數會按照參數的指定建立一個文件,如果參數所指定的文件已經存在則將被新文件覆蓋

      FileWriterfileWriter = null;

      try {

          fileWriter= new FileWriter("e:\\abin.txt");

          //調用write方法將內容寫入流

          fileWriter.write("我是陳從賓");

          fileWriter.write("my name is chen cong bin");

          //刷新流,將數據寫進目的文件。

          fileWriter.flush();

      } catch (IOException e) {

          System.err.println(e.toString());

      }finally{

          if (fileWriter != null) {

              //關閉流,但在關閉之前先刷新流,將流中的數據寫進目的文件

              //與flush區別是flush刷新後可以繼續使用而流不被關閉。close刷新後,會將流關閉

              try {

                  fileWriter.close();

              }catch (IOException e) {

                  System.err.println(e.toString());

              }

          }

      }

  }

}

示例程序二:

package com.abin;

 

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.IOException;

 

public class FileReaderDemo {

  public static void main(String[] args){

      FileReaderfileReader = null;

     

      char [] buf= new char[1024];

      int num = 0;

          try {

              //建立一個讀入流,並與目的文件關聯,在此之前需要確定目的文件存在

              fileReader= new FileReader("e:\\abin.txt");

          }catch (FileNotFoundException e) {

              e.printStackTrace();

          }

      try {

          //read(char[]buf)返回的是讀到的字節數目,讀到流的末尾返回-1

          while ((num = fileReader.read(buf))!=-1) {

                  System.out.print(new String(buf, 0,num));

          }

      } catch (IOException e) {

          e.printStackTrace();

      }finally{

          if (fileReader!=null) {

              try {

                  //關閉流

                  fileReader.close();

              }catch (IOException e) {

                  e.printStackTrace();

              }

          }

         

      }

     

  }

}

利用構造函數FileWriter(String fileName, boolean append),當append爲true時可以實現續寫。

在此還需注意對IOException的處理,一般要將關閉流操作放在finally{}之中,有可能會出現FileNotFoundException(一般是因指定的操作文件或目的文件不存在造成的) ,NullPointException(一般是對象未能成功初始化造成的)。

發佈了43 篇原創文章 · 獲贊 12 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章