Java IO(三)のFileInputStream

2792 ワード

前言:ファイルシステム内のファイルについて.いずれもFileInputStreamストリームクラスを使用してバイナリ形式で読み込むことができます.しかしJava自体がJVM上に位置しているため,コンピュータの下位層を処理する能力はない.したがって、下位処理に関するいくつかの方法は、nativeメソッドを使用してサードパーティの下位言語を呼び出して処理される.本人はFileInputStreamクラスの内部実装を解説することに重点を置いている.過度な解説は使わない.
FileInputStreamのクラス図:
解析:FileInputStreamは3つの構造方法を再ロードした.次の3つの方法でフローを初期入力できます.public FileInputStream(String name)throws FileNotFoundException;入力ストリームをパスで初期化します.内部で呼び出されるのは、以下の構造方法public FileInputStream(File file)throws FileNotFoundExceptionです.入力フローpublic FileInputStream(FileDescriptor fdObj):FileDescriptorインスタンスで最初の入力ストリーム(FileDescriptorはファイル記述子)
FileInputStreamの内部には、入力ストリームのステータスを識別するためのいくつかのプロパティが記録されています.private final String path;ファイルのパス情報private final Object closeLock=new Object()閉じるときの同期ロックprivate volatile boolean closed=false;
FileInputStreamの内部には、ファイルシステムの操作を完全にするために最下位言語を呼び出すためのいくつかのnativeタイプの方法があります.private native void open 0(String name)throws FileNotFoundException;ファイルprivate native int read 0()throws IOExceptionを開きます.バイトprivate native int readBytes(byte b[],int off,int len)throws IOExceptionを読み込みます.指定バイト数public native long skip(long n)throws IOExceptionを読み込みます.指定バイトを破棄し、次回の読み込み時には、破棄後の位置からpublic native int available()throws IOExceptionを読み込みます.ファイルの次のファイル長private static native void initIDs()を取得します.private native void close0() throws IOException; :ファイルを閉じるFileInputStreamストリームクラスの内部には、ファイル操作のメカニズムが用意されていますが、Java言語の限界のため、FileInputStreamはnativeメソッドで下位言語を呼び出す必要があります.
たとえば、次の簡単な例を示します.
public class FileInTest {

    public static void main(String[] args) throws FileNotFoundException {

        InputStream is = new FileInputStream("F:/shiro-config.ini");

        int i;
        try {
            i = is.read();

            while (i != -1) {
                System.out.println((char) i);
                i = is.read();
            }
            is.close();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

    }

}
実際の応用では.FileInputStreamは単独ではあまり使用されず、他の装飾ストリームとともに使用して、より簡単な操作ファイルを達成する必要があります.
他のIOストリームはこのシリーズで一つ一つ解説します.