电竞比分网-中国电竞赛事及体育赛事平台

分享

java中輸入輸出總結(jié)

 sam225 2010-05-04
一、數(shù)據(jù)流的基本概念

       流一般分為輸入流(Input Stream)和輸出流(Output Stream)兩類,但這種劃分并不是絕對的。比如一個文件,當向其中寫數(shù)據(jù)時,它就是一個輸出流;當從其中讀取數(shù)據(jù)時,它就是一個輸入流。當然,鍵盤只是一個數(shù)人流,而屏幕則只是一個輸出流。
      java的標準數(shù)據(jù)流:標準輸入輸出指在字符方式下(如DOS),程序與系統(tǒng)進行交互的方式,分為三種:
       標準輸入studin,對象是鍵盤。
       標準輸出stdout,對象是屏幕。
       標準錯誤輸出stderr,對象也是屏幕。

二、java.io包中的數(shù)據(jù)流和文件類

       字節(jié)流:從InputStream和OutputStream派生出來的一系列類。這類流以字節(jié)(byte)為基本處理單位。
          InputStream、OutputStream
          FileInputStream、FileOutputStream
          PipedInputStream、PipedOutputStream
          ByteArrayInputStream、ByteArrayOutputStream
          FilterInputStream、FilterOutputStream
          DataInputStream、DataOutputStream
          BufferedInputStream、BufferedOutputStream
        字符流:從Reader和Writer派生出的一系列類,這類流以16位的Unicode碼表示的字符為基本處理單位。
        Reader、Writer
        InputStreamReader、OutputStreamWriter
        FileReader、FileWriter
        CharArrayReader、CharArrayWriter
         PipedReader、PipedWriter
         FilterReader、FilterWriter
         BufferedReader、BufferedWriter
         StringReader、StringWriter

三、字節(jié)流方法

InputStream 和OutputStream
   read():從流中讀入數(shù)據(jù)
   skip():跳過流中若干字節(jié)數(shù)
   available():返回流中可用字節(jié)數(shù)
    mark():在流中標記一個位置
    reset():返回標記過得位置
   markSupport():是否支持標記和復位操作
    close():關(guān)閉流
    int read() :從輸入流中讀一個字節(jié),形成一個0~255之間的整數(shù)返回(是一個抽象方法)。
      int read(byte b[]) :讀多個字節(jié)到數(shù)組中。
     int read(byte b[], int off, int len):從輸入流中讀取長度為len的數(shù)據(jù),寫入數(shù)組b中從索引off開始的位置,并返回讀取得字節(jié)數(shù)。
     write(int b) :將一個整數(shù)輸出到流中(只輸出低位字節(jié),抽象)
    write(byte b[]) :將字節(jié)數(shù)組中的數(shù)據(jù)輸出到流中
    write(byte b[], int off, int len) :將數(shù)組b中從off指定的位置開始,長度為len的數(shù)據(jù)輸出到流中
    flush():刷空輸出流,并將緩沖區(qū)中的數(shù)據(jù)強制送出
     close():關(guān)閉流

注:進行I/O操作時可能會產(chǎn)生I/O例外,屬于非運行時例外,應該在程序中處理。如:型FileNotFoundException, EOFException, IOException

四、文件操作類的方法

File類
File類聲明如下:
public class File ectends Object implements Serializable,Comparable
構(gòu)造方法:
public File(String pathname)
public File(File patent,String child)
public File(String patent,String child)
文件名的處理
    String getName( ); //得到一個文件的名稱(不包括路徑)
    String getPath( ); //得到一個文件的路徑名
    String getAbsolutePath( );//得到一個文件的絕對路徑名
     String getParent( ); //得到一個文件的上一級目錄名
    String renameTo(File newName); //將當前文件名更名為給定文件的完整路徑
文件屬性測試
    boolean exists( ); //測試當前File對象所指示的文件是否存在
    boolean canWrite( );//測試當前文件是否可寫
     boolean canRead( );//測試當前文件是否可讀
    boolean isFile( ); //測試當前文件是否是文件(不是目錄)
    boolean isDirectory( ); //測試當前文件是否是目錄
普通文件信息和工具
     long lastModified( );//得到文件最近一次修改的時間
    long length( ); //得到文件的長度,以字節(jié)為單位
     boolean delete( ); //刪除當前文件
目錄操作
    boolean mkdir( ); //根據(jù)當前對象生成一個由該對象指定的路徑
    String list( ); //列出當前目錄下的文件
文件過濾器
       類FilterInputStream和FilterOutputStream分別對其他輸入/輸出流進行特殊處理,它們在讀/寫數(shù)據(jù)的同時可以對數(shù)據(jù)進行特殊處理。另外還提供了同步機制,使得某一時刻只有一個線程可以訪問一個輸入/輸出流。
        類FilterInputStream和FilterOutputStream分別重寫了父類InputStream和OutputStream的所有方法,同時,它們的子類也應該重寫它們的方法以滿足特定的需要
•     要使用過濾流,首先必須把它連接到某個輸入/輸出流上,通常在構(gòu)造方法的參數(shù)中指定所要連接的流:
–     FilterInputStream(InputStream in);
–     FilterOutputStream(OutputStream out);
注:這兩個類是抽象類,構(gòu)造方法也是保護方法
       類BufferedInputStream和BufferedOutputStream實現(xiàn)了帶緩沖的過濾流,它提供了緩沖機制,把任意的I/O流“捆綁”到緩沖流上,可以提高讀寫效率
•     在初始化時,除了要指定所連接的I/O流之外,還可以指定緩沖區(qū)的大小。缺省大小的緩沖區(qū)適合于通常的情形;最優(yōu)的緩沖區(qū)大小常依賴于主機操作系統(tǒng)、可使用的內(nèi)存空間以及機器的配置等;一般緩沖區(qū)的大小為內(nèi)存頁或磁盤塊等地整數(shù)倍,如8912字節(jié)或更小。
–     BufferedInputStream(InputStream in[, int size])
–     BufferedOutputStream(OutputStream out[, int size])
文件對話框
    隨機文件操作
于InputStream 和OutputStream 來說,它們的實例都是順序訪問流,也就是說,只能對文件進行順序地讀/寫。隨機訪問文件則允許對文件內(nèi)容進行隨機讀/寫。在java中,類 RandomAccessFile 提供了隨機訪問文件的方法。類RandomAccessFile的聲明為:
public class RandomAccessFile extends Object implements DataInput, DataOutput
     File:以文件路徑名的形式代表一個文件
     FileDescriptor:代表一個打開文件的文件描述
     FileFilter & FilenameFilter:用于列出滿足條件的文件
     File.list(FilenameFilter fnf)
     File.listFiles(FileFilter ff)
     FileDialog.setFilenameFilter(FilenameFilter fnf)
•     FileInputStream & FileReader:順序讀文件
•     FileOutputStream & FileWriter:順序?qū)懳募?br>•     RandomAccessFile:提供對文件的隨機訪問支持
類RandomAccessFile則允許對文件內(nèi)容同時完成讀和寫操作,它直接繼承Object,并且同時實現(xiàn)了接口DataInput和DataOutput,提供了支持隨機文件操作的方法
 DataInput和DataOutput中的方法
•     readInt(), writeDouble()…
     int skipBytes(int n):將指針鄉(xiāng)下移動若干字節(jié)
    length():返回文件長度
    long getFilePointer():返回指針當前位置
     void seek(long pos):將指針調(diào)到所需位置
     void setLength(long newLength):設(shè)定文件長度
構(gòu)造方法:
RandomAccessFile(File file, String mode)
     RandomAccessFile(String name, String mode)
mode 的取值
–     “r” 只讀. 任何寫操作都將拋出IOException。
–     “rw” 讀寫. 文件不存在時會創(chuàng)建該文件,文件存在時,原文件內(nèi)容不變,通過寫操作改變文件內(nèi)容。
–     “rws” 同步讀寫. 等同于讀寫,但是任何協(xié)操作的內(nèi)容都被直接寫入物理文件,包括文件內(nèi)容和文件屬性。
–     “rwd” 數(shù)據(jù)同步讀寫. 等同于讀寫,但任何內(nèi)容寫操作都直接寫到物理文件,對文件屬性內(nèi)容的修改不是這樣。

五、字符流的方法

Reader類和Writer類
        在JDK1.1之前,java.io包中的流只有普通的字節(jié)流(以byte為基本處理單位的流),這種流對于以16位的Unicode碼表示的字符流處理很不方便。從JDK1.1開始, java.io包中加入了專門用于字符流處理的類,它們是以Reader和Writer為基礎(chǔ)派生的一系列類
同類InputStream和OutputStream一樣,Reader和Writer也是抽象類,只提供了一系列用于字符流處理的接口。它們的方法與類InputStream和OutputStream類似,只不過其中的參數(shù)換成字符或字符數(shù)組
Reader類
•     void close()
•     void mark(int readAheadLimit)
•     boolean markSupported() :
•     int read()
•     int read(char[] cbuf)
•     int read(char[] cbuf, int off, int len)
•     boolean ready()
•     void reset()
•     long skip(long n)
Writer類
•     void close()
•     void flush()
•     void write(char[] cbuf)
•     void write(char[] cbuf, int off, int len)
•     void write(int c)
•     void write(String str)
•     void write(String str, int off, int len)

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多