六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

JAVA圖文說明教程 第4講 Java的例外處理與I/O流(二)

[摘要]4.5.2 文件的順序處理   類FileInputStream和FileOutputStream用來進行文件I/O處理,由它們所提供的方法可以打開本地主機上的文件,并進行順序的讀/寫。例如,下列的語句段是順序讀取文件名為text的文件里的內容,并顯示在控制臺上面,直到文件結束為止。   File...
4.5.2 文件的順序處理

  類FileInputStream和FileOutputStream用來進行文件I/O處理,由它們所提供的方法可以打開本地主機上的文件,并進行順序的讀/寫。例如,下列的語句段是順序讀取文件名為text的文件里的內容,并顯示在控制臺上面,直到文件結束為止。

  FileInputStream fis;
   try{
    fis = new FileInputStream( "text" );
   System.out.print( "content of text is : ");
     int b;
     while( (b=fis.read())!=-1 ) //順序讀取文件text里的內容并賦值
                    給整型變量b,直到文件結束為止。
     {              
       System.out.print( (char)b );
     }
   }catch( FileNotFoundException e ){
   System.out.println( e );
   }catch( IOException e ){
   System.out.println( e );
   }

  4.5.3 隨機訪問文件

  對于InputStream 和OutputStream 來說,它們的實例都是順序訪問流,也就是說,只能對文件進行順序地讀/寫。隨機訪問文件則允許對文件內容進行隨機讀/寫。在java中,類RandomAccessFile 提供了隨機訪問文件的方法。類RandomAccessFile的聲明為:
  public class RandomAccessFile extends Object implements DataInput, DataOutput

  接口DataInput 中定義的方法主要包括從流中讀取基本類型的數據、讀取一行數據、或者讀取指定長度的字節數。如:readBoolean( )、readInt( )、readLine( )、readFully( ) 等。

  接口DataOutput 中定義的方法主要是向流中寫入基本類型的數據、或者寫入一定長度的字節數組。如:writeChar( )、writeDouble( )、write( ) 等。 下面詳細介紹RandomAccessFile類中的方法。

  ◇ 構造方法:
  RandomAccessFile(String name,String mode); //name是文件名,mode
          //是打開方式,例如"r"表示只讀,"rw"表示可讀寫,"
  RandomAccessFile(File file,String mode); //file是文件對象

  ◇ 文件指針的操作
  long getFilePointer( ); //用于得到當前的文件指針
  void seek( long pos ); //用于移動文件指針到指定的位置
  int skipBytes( int n ); //使文件指針向前移動指定的n個字節

  4.6 過濾流

   過濾流在讀/寫數據的同時可以對數據進行處理,它提供了同步機制,使得某一時刻只有一個線程可以訪問一個I/O流,以防止多個線程同時對一個I/O流進行操作所帶來的意想不到的結果。類FilterInputStream和FilterOutputStream分別作為所有過濾輸入流和輸出流的父類

   過濾流類層次:


     java.lang.Object
  
   +----java.io.InputStream
  
   +----java.io.FilterInputStream



  為了使用一個過濾流,必須首先把過濾流連接到某個輸入/出流上,通常通過在構造方法的參數中指定所要連接的輸入/出流來實現。例如:

  FilterInputStream( InputStream in );
  FilterOutputStream( OutputStream out );

  4.6.1 幾種常見的過濾流

  ◇ BufferedInputStream和BufferedOutputStream
    緩沖流,用于提高輸入/輸出處理的效率。

  ◇ DataInputStream 和 DataOutputStream
    不僅能讀/寫數據流,而且能讀/寫各種的java語言的基本類型,如:boolean,int,float等。

  ◇ LineNumberInputStream
    除了提供對輸入處理的支持外,LineNumberInputStream可以記錄當前的行號。

  ◇ PushbackInputStream
    提供了一個方法可以把剛讀過的字節退回到輸入流中,以便重新再讀一遍。

  ◇ PrintStream
    打印流的作用是把Java語言的內構類型以其字符表示形式送到相應的輸出流。

  4.7 字符流的處理

  java中提供了處理以16位的Unicode碼表示的字符流的類,即以Reader和Writer 為基類派生出的一系列類。

  4.7.1 Reader和Writer

   這兩個類是抽象類,只是提供了一系列用于字符流處理的接口,不能生成這兩個類的實例,只能通過使用由它們派生出來的子類對象來處理字符流。

  1.Reader類是處理所有字符流輸入類的父類。

  ◇ 讀取字符
  public int read() throws IOException; //讀取一個字符,返回值為讀取的字符
  public int read(char cbuf[]) throws IOException; /*讀取一系列字符到數組cbuf[]中,返回值為實際讀取的字符的數量*/
  public abstract int read(char cbuf[],int off,int len) throws IOException;
  /*讀取len個字符,從數組cbuf[]的下標off處開始存放,返回值為實際讀取的字符數量,該方法必須由子類實現*/

  ◇ 標記流
  public boolean markSupported(); //判斷當前流是否支持做標記
  public void mark(int readAheadLimit) throws IOException;
   //給當前流作標記,最多支持readAheadLimit個字符的回溯。
  public void reset() throws IOException; //將當前流重置到做標記處

  ◇ 關閉流
  public abstract void close() throws IOException;

  2. Writer類是處理所有字符流輸出類的父類。

  ◇ 向輸出流寫入字符
  public void write(int c) throws IOException;
  //將整型值c的低16位寫入輸出流
  public void write(char cbuf[]) throws IOException;
  //將字符數組cbuf[]寫入輸出流
  public abstract void write(char cbuf[],int off,int len) throws IOException;
  //將字符數組cbuf[]中的從索引為off的位置處開始的len個字符寫入輸出流
  public void write(String str) throws IOException;
  //將字符串str中的字符寫入輸出流
  public void write(String str,int off,int len) throws IOException;
  //將字符串str 中從索引off開始處的len個字符寫入輸出流

  ◇ flush( )
  刷空輸出流,并輸出所有被緩存的字節。

  ◇ 關閉流
  public abstract void close() throws IOException;

  4.7.2 InputStreamReader和OutputStreamWriter

  java.io包中用于處理字符流的最基本的類,用來在字節流和字符流之間作為中介。

   ◇ 生成流對象
  public InputStreamReader(InputStream in);
  /*in是字節流,而InputStreamReader是字符流,但是其來源是字節流in,
  因此InputStreamReader就可以把字節流in轉換成字符流處理。/*

  public InputStreamReader(InputStream in,String enc) throws UnsupportedEncodingException;
  /*enc是編碼方式,就是從字節流到字符流進行轉換時所采用的編碼方式,
   例如 ISO8859-1,UTF-8,UTF-16等等*/

  public OutputStreamWriter(OutputStream out);
  /*out是字節流,而OutputStreamReader是字符流 */

  public OutputStreamWriter(OutputStream out,String enc) throws UnsupportedEncodingException; //enc是編碼方式

  InputStreamReader和OutputStreamWriter的方法:

  ◇ 讀入和寫出字符
  基本同Reader和Writer。

  ◇ 獲取當前編碼方式
  public String getEncoding();

  ◇ 關閉流
  public void close() throws IOException;



主站蜘蛛池模板: 欧美亚洲国产日韩一区二区三区 | 欧洲呦女网站 | 伊人久久大香线蕉综合热线 | 日日夜夜天天久久 | 日韩免费无砖专区2020狼 | 日本网络视频www色高清免费 | 色噜噜影院 | 日产精品久久久一区二区 | 香蕉久草视频 | 日韩精品在线观看视频 | 青青青青青国产免费手机看视频 | 天天躁夜夜躁狠狠躁2018a | 亚洲福利在线视频 | 亚洲综合久 | 天天久久综合网站 | 日本在线视频免费观看 | 又粗又硬又大又爽免费视频播放 | 亚洲视频中文字幕在线观看 | 欧美一区二区三区日韩免费播 | 三级黄色在线视频 | 日本一区二区视频在线观看 | 日本伦理中文字幕 | 天天干天天做天天射 | 在线观看中文字幕亚洲 | 色综久久天天综合绕视看 | 亚洲不卡在线播放 | 婷婷伊人 | 一级床片40分钟免费视频 | 午夜国产精品久久影院 | 永久免费看毛片 | 宇都宫紫苑(rion)在线播放 | 日本一二三区高清 | 欧美特黄一级高清免费的香蕉 | 深夜久久 | 全部免费国产潢色一级 | 日本永久免费 | 中国国产一级毛片视频 | 天天色网站 | 自拍一区在线 | 午夜在线免费观看 | 人人揉人人人人澡人人 |