国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

JAVA教程 第七講 Swing用戶界面設(shè)計(二)

瀏覽:3日期:2024-03-05 16:29:40

4.5.2 文件的順序處理

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

FileInputStream fis;

try{

fis = new FileInputStream( 'text' );

System.out.print( 'content of text is : ');

 int b;

 while( (b=fis.read())!=-1 ) //順序讀取文件text里的內(nèi)容并賦值

給整型變量b,直到文件結(jié)束為止。

 {  

 System.out.print( (char)b );

 }

}catch( FileNotFoundException e ){

System.out.println( e );

}catch( IOException e ){

System.out.println( e );

}

4.5.3 隨機(jī)訪問文件

對于InputStream 和OutputStream 來說,它們的實例都是順序訪問流,也就是說,只能對文件進(jìn)行順序地讀/寫。隨機(jī)訪問文件則允許對文件內(nèi)容進(jìn)行隨機(jī)讀/寫。在java中,類RandomAccessFile 提供了隨機(jī)訪問文件的方法。類RandomAccessFile的聲明為:

public class RandomAccessFile extends Object implements DataInput, DataOutput

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

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

◇ 構(gòu)造方法:

RandomAccessFile(String name,String mode); //name是文件名,mode

//是打開方式,例如'r'表示只讀,'rw'表示可讀寫,'

RandomAccessFile(File file,String mode); //file是文件對象

◇ 文件指針的操作

long getFilePointer( ); //用于得到當(dāng)前的文件指針

void seek( long pos ); //用于移動文件指針到指定的位置

int skipBytes( int n ); //使文件指針向前移動指定的n個字節(jié)

4.6 過濾流

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

過濾流類層次:

java.lang.Object

|

+----java.io.InputStream

|

+----java.io.FilterInputStream

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

FilterInputStream( InputStream in );

FilterOutputStream( OutputStream out );

4.6.1 幾種常見的過濾流

◇ BufferedInputStream和BufferedOutputStream

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

◇ DataInputStream 和 DataOutputStream

  不僅能讀/寫數(shù)據(jù)流,而且能讀/寫各種的java語言的基本類型,如:boolean,int,float等。

◇ LineNumberInputStream

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

◇ PushbackInputStream

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

◇ PrintStream

  打印流的作用是把Java語言的內(nèi)構(gòu)類型以其字符表示形式送到相應(yīng)的輸出流。

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; /*讀取一系列字符到數(shù)組cbuf[]中,返回值為實際讀取的字符的數(shù)量*/

public abstract int read(char cbuf[],int off,int len) throws IOException;

/*讀取len個字符,從數(shù)組cbuf[]的下標(biāo)off處開始存放,返回值為實際讀取的字符數(shù)量,該方法必須由子類實現(xiàn)*/

◇ 標(biāo)記流

public boolean markSupported(); //判斷當(dāng)前流是否支持做標(biāo)記

public void mark(int readAheadLimit) throws IOException;

//給當(dāng)前流作標(biāo)記,最多支持readAheadLimit個字符的回溯。

public void reset() throws IOException; //將當(dāng)前流重置到做標(biāo)記處

◇ 關(guān)閉流

public abstract void close() throws IOException;

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

◇ 向輸出流寫入字符

public void write(int c) throws IOException;

//將整型值c的低16位寫入輸出流

public void write(char cbuf[]) throws IOException;

//將字符數(shù)組cbuf[]寫入輸出流

public abstract void write(char cbuf[],int off,int len) throws IOException;

//將字符數(shù)組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( )

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

◇ 關(guān)閉流

public abstract void close() throws IOException;

4.7.2 InputStreamReader和OutputStreamWriter

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

◇ 生成流對象

public InputStreamReader(InputStream in);

/*in是字節(jié)流,而InputStreamReader是字符流,但是其來源是字節(jié)流in,

因此InputStreamReader就可以把字節(jié)流in轉(zhuǎn)換成字符流處理。/*

public InputStreamReader(InputStream in,String enc) throws UnsupportedEncodingException;

/*enc是編碼方式,就是從字節(jié)流到字符流進(jìn)行轉(zhuǎn)換時所采用的編碼方式,

 例如 ISO8859-1,UTF-8,UTF-16等等*/

public OutputStreamWriter(OutputStream out);

/*out是字節(jié)流,而OutputStreamReader是字符流 */

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

InputStreamReader和OutputStreamWriter的方法:

◇ 讀入和寫出字符

基本同Reader和Writer。

◇ 獲取當(dāng)前編碼方式

public String getEncoding();

◇ 關(guān)閉流

public void close() throws IOException;

4.7.3 BufferedReader和BufferedWriter

◇ 生成流對象

public BufferedReader(Reader in); //使用缺省的緩沖區(qū)大小

public BufferedReader(Reader in, int sz); //sz為緩沖區(qū)的大小

public BufferedWriter(Writer out);

public BufferedWriter(Writer out, int sz);

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 国内自拍区 | 久色视频在线观看 | 中文字幕在线播 | 久久视频在线免费观看 | 国产精品亚洲综合 | 国产精品黄在线观看免费软件 | 日韩精品一区二区在线观看 | 一级特色黄大片 | 久久99久久精品久久久久久 | 美女被免费视频网站a国产 美女被免费网站视频软件 美女被免费网站在线软件 美女被免费网站在线视频软件 | 国产日韩精品一区在线不卡 | 欧美一区二区二区 | 亚洲欧美一区二区三区在线播放 | 亚洲 自拍 欧美 综合 | 寡妇一级毛片 | 日本在线免费视频 | 香蕉521av网站永久地址 | 久久久9999久久精品小说 | 亚洲成人高清在线观看 | 美女视频网站永久免费观看软件 | 成人网18免费网 | 中文字幕亚洲天堂 | 99视频九九精品视频在线观看 | 性做久久久久久久免费观看 | 国产视频日韩 | 日本理论片免费高清影视在线观看 | 九九99香蕉在线视频免费 | 免费国产午夜高清在线视频 | 国产成人精品一区二三区 | 日本韩国三级在线观看 | 亚洲欧美日韩专区 | 国产精品免费视频一区一 | 亚洲欧美日韩在线播放 | 国内精品久久久久久久久蜜桃 | 日韩国产欧美在线观看 | 国产在线观看91精品一区 | 三级毛片免费 | 丝袜美腿精品一区二区三 | 成人欧美网站免费 | 久久国产精品久久久久久久久久 | 欧美成人影院 在线播放 |