【Java】IOフローの基礎知識

2066 ワード

一、Javaの入出力ストリームは主にInputStream/Reader、OutputStream/Writerを抽象ベースクラスとし、InputStream、OutputStreamが操作するデータユニットは8ビットのバイトストリームであり、Reader/Writerが操作するデータユニットは16ビットの文字ストリームである.
次に例を示します.
//FileInputStreamTest>>>>>>>>>>>>>>>>>>>>>>>>>
// InputStream      ,   byte  
FileInputStream fis = new FileInputStream("C:\\Users\\dell\\Desktop\\mykey.txt");
FileOutputStream fos = new FileOutputStream("C:\\Users\\dell\\Desktop\\tokey.txt");
byte[] buffer = new byte[1024];
int len = 0;
while((len = fis.read(buffer))> 0){
<span style="white-space:pre">	</span>System.out.println(new String(buffer,0,len));
	fos.write(buffer, 0, len);
}
fis.close();
fos.close();
//FileInputStreamTest>>>>>>>>>>>>>>>>>>>>>>>>>
		
//FileReaderTest>>>>>>>>>>>>>>>>>>>>>>>>>
// Reader      ,   char  
FileReader fr = new FileReader("C:\\Users\\dell\\Desktop\\copy.txt");
FileWriter fw = new FileWriter("C:\\Users\\dell\\Desktop\\tocopy.txt");
char[] cbuf = new char[64];
int clen = 0;
while((clen = fr.read(cbuf))> 0){
	System.out.println(new String(cbuf,0,clen));
	fw.write(cbuf, 0, clen);
}
fr.close();
fw.close();
//FileReaderTest>>>>>>>>>>>>>>>>>>>>>>>>>

二、処理フローは高級フローであり、ノードフローを包装し、入出力操作をより簡単にし、実行効率が高い.通常、コンストラクタパラメータとして、処理フローの作成時にノードフローが入力されるだけで、この処理フローはノードフローをパッケージした処理フローである.たとえば、バッファフローBufferedReaderを使用してInputSreamReaderをパッケージ化します(バイト入力を文字入力ストリームに変換します):
InputStreamReader reader = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(reader);

三、オブジェクトのシーケンス化の目的は、オブジェクトをディスクに保存するか、ネットワーク内でオブジェクトを直接転送できるようにすることである.オブジェクトにシーケンス化メカニズムをサポートさせるには、そのクラスをシーケンス化可能(Serializable)にし、実装する必要があります.
Serializableインタフェースは、いかなる方法も実現する必要はありません.