Java-変換ストリーム、文字バッファストリーム
12273 ワード
転換流
OutputStreamWriterは、指定された文字コードテーブルを使用して、ストリームに書き込む文字をバイトにエンコードします。その役割は、文字列を指定された符号表に従ってバイトに変換し、バイトストリームを使ってこれらのバイトを書き出すことです。
コードのプレゼンテーション:
InputStreamReaderは、指定された文字コード表を使ってバイトを読み込み、文字に復号するバイトストリームのブリッジである。使用する文字セットは、名前によって指定されたり、明示的に与えられたり、プラットフォームのデフォルトの文字セットを受け入れることができます。
コードのプレゼンテーション:
変換ストリームとサブクラスの違い:
OutputStreamWriterとInputStreamReaderは文字とバイトの橋です。文字変換ストリームともいいます。文字変換ストリームの原理:バイトストリーム+符号表。
FileWriterとFileReader:サブクラスとしては、操作文字ファイルの便利類としてのみ存在します。操作された文字ファイルは、デフォルトのコードテーブルを使用していますが、親類を使わずに直接サブクラスで操作が完了し、コードが簡略化されました。
InputStream Reader isr=new InputStream Reader(new FileInputStream)//デフォルトの文字セット
InputStream Reader isr=new InputStream Reader(new FileInputStream(「a.txt」)、「GBK」)GBK文字セットを指定します。
FileReader fr=new FileReader(「a.txt」);
この三つのコードの機能は同じです。その中で第三文が一番便利です。
注意:他の符号化を指定する場合は、サブクラスは絶対に使用しないでください。文字変換ストリームは必ず使用してください。子供はいつ使いますか?
条件:1、操作はファイルです。2、デフォルトのコードを使います。
まとめ:
バイト-->文字:読めない-->分かります。 読みたいです。入力ストリームInputStream Reader
文字-->バイト:読むことが分かります。 書く必要があります。出力ストリームOutput Stream Writer
バッファ:
バイトバッファは流れの方向によって2つあります。
データをストリームに書き込み、バイトバッファ出力ストリームBufferedOutputStream
ストリーム中のデータを読み出し、バイトバッファ入力ストリームBufferedInputStream
これらの内部にはバッファが含まれています。バッファを通して読み書きすることで、IOストリームの読み書き速度が向上します。
バイトバッファを通して、ファイルの読み書き操作を行い、データをファイルに書き込む操作を行います。
作成方法
public BufferedOutputStreamは、指定された最下層出力ストリームにデータを書き込むための新しいバッファ出力ストリームを作成します。
構造方法public BufferediInputStream(InputStream in)
文字バッファ入力ストリームBufferedReader
キャラクタバッファ出力ストリーム
テキストデータの効率的な書き込みと読み出しを完了します。
BufferedWriter 文字出力ストリームにテキストを書き込み、各文字をバッファリングして、単一文字、配列、文字列の効率的な書き込みを提供します。
方法:void newLine()現在のシステムに従って、改行符を書きます。
方法: public String readLine() テキスト行を読み、行の内容を含む文字列には、行の終止符が含まれていません。ストリームの最後に達したら、nullに戻ります。
OutputStreamWriterは、指定された文字コードテーブルを使用して、ストリームに書き込む文字をバイトにエンコードします。その役割は、文字列を指定された符号表に従ってバイトに変換し、バイトストリームを使ってこれらのバイトを書き出すことです。
コードのプレゼンテーション:
public static void writeCN() throws Exception {
//
FileOutputStream fos = new FileOutputStream("c:\\cn8.txt");
// ,
OutputStreamWriter osw = new OutputStreamWriter(fos,"utf-8");
// , ,
osw.write(" ");// 。
osw.close();
}
OutputStreamWriterオブジェクトのwriteメソッドを呼び出すと、文字を指定のコードテーブルに照会し、調べた文字の符号化値をバイト数に変換してOutput StreamWriterバッファに格納します。リフレッシュ機能を呼び出したり、ストリームを閉じたり、バッファがいっぱいになると、指定されたファイルにバイトデータを使ってバイトストリームを書き込みます。InputStreamReaderは、指定された文字コード表を使ってバイトを読み込み、文字に復号するバイトストリームのブリッジである。使用する文字セットは、名前によって指定されたり、明示的に与えられたり、プラットフォームのデフォルトの文字セットを受け入れることができます。
コードのプレゼンテーション:
public class InputStreamReaderDemo {
public static void main(String[] args) throws IOException {
//
readCN();
}
public static void readCN() throws IOException{
//
InputStream in = new FileInputStream("c:\\cn8.txt");
//
//InputStreamReader isr = new InputStreamReader(in); , ,
InputStreamReader isr = new InputStreamReader(in,"utf-8");
//
int ch = 0;
while((ch = isr.read())!=-1){
System.out.println((char)ch);
}
//
isr.close();
}
}
指定された符号化されたファイルを読み込むときは、必ず符号化フォーマットを指定してください。復号エラーが発生し、文字化けが発生します。変換ストリームとサブクラスの違い:
OutputStreamWriterとInputStreamReaderは文字とバイトの橋です。文字変換ストリームともいいます。文字変換ストリームの原理:バイトストリーム+符号表。
FileWriterとFileReader:サブクラスとしては、操作文字ファイルの便利類としてのみ存在します。操作された文字ファイルは、デフォルトのコードテーブルを使用していますが、親類を使わずに直接サブクラスで操作が完了し、コードが簡略化されました。
InputStream Reader isr=new InputStream Reader(new FileInputStream)//デフォルトの文字セット
InputStream Reader isr=new InputStream Reader(new FileInputStream(「a.txt」)、「GBK」)GBK文字セットを指定します。
FileReader fr=new FileReader(「a.txt」);
この三つのコードの機能は同じです。その中で第三文が一番便利です。
注意:他の符号化を指定する場合は、サブクラスは絶対に使用しないでください。文字変換ストリームは必ず使用してください。子供はいつ使いますか?
条件:1、操作はファイルです。2、デフォルトのコードを使います。
まとめ:
バイト-->文字:読めない-->分かります。 読みたいです。入力ストリームInputStream Reader
文字-->バイト:読むことが分かります。 書く必要があります。出力ストリームOutput Stream Writer
バッファ:
バイトバッファは流れの方向によって2つあります。
データをストリームに書き込み、バイトバッファ出力ストリームBufferedOutputStream
ストリーム中のデータを読み出し、バイトバッファ入力ストリームBufferedInputStream
これらの内部にはバッファが含まれています。バッファを通して読み書きすることで、IOストリームの読み書き速度が向上します。
バイトバッファを通して、ファイルの読み書き操作を行い、データをファイルに書き込む操作を行います。
作成方法
public BufferedOutputStreamは、指定された最下層出力ストリームにデータを書き込むための新しいバッファ出力ストリームを作成します。
public class BufferedOutputStreamDemo01 {
public static void main(String[] args) throws IOException {
//
write();
}
/*
*
* 1,
* 2,
* 3,
*/
private static void write() throws IOException {
//
FileOutputStream fileOut = new FileOutputStream("abc.txt");
// , ,
BufferedOutputStream out = new BufferedOutputStream(fileOut);
//2,
out.write("hello".getBytes());
//3,
out.close();
}
}
バイトバッファ入力ストリームBufferedInputStream構造方法public BufferediInputStream(InputStream in)
/*
*
* 1,
* 2, ,
* 3,
*/
private static void read() throws IOException {
//1,
FileInputStream fileIn = new FileInputStream("abc.txt");
//
BufferedInputStream in = new BufferedInputStream(fileIn);
//2,
int ch = -1;
while ( (ch = in.read()) != -1 ) {
//
System.out.print((char)ch);
}
//3,
in.close();
}
文字バッファ文字バッファ入力ストリームBufferedReader
キャラクタバッファ出力ストリーム
テキストデータの効率的な書き込みと読み出しを完了します。
BufferedWriter 文字出力ストリームにテキストを書き込み、各文字をバッファリングして、単一文字、配列、文字列の効率的な書き込みを提供します。
方法:void newLine()現在のシステムに従って、改行符を書きます。
/*
* BufferedWriter
*
* public void newLine()
*
* :
* :
* 1,
* 2,
* 3,
*
*/
public class BufferedWriterDemo {
public static void main(String[] args) throws IOException {
//
//
FileWriter fileOut = new FileWriter("file.txt");
//
BufferedWriter out = new BufferedWriter(fileOut);
//2,
for (int i=0; i<5; i++) {
out.write("hello");
out.newLine();
}
//3,
out.close();
}
}
BufferedReader 文字入力ストリームからテキストを読み取り、各文字をバッファリングし、文字、配列、行の効率的な読み取りを実現します。方法: public String readLine() テキスト行を読み、行の内容を含む文字列には、行の終止符が含まれていません。ストリームの最後に達したら、nullに戻ります。
/*
* BufferedReader
*
* :
* String readLine()
* : ,
*/
public class BufferedReaderDemo {
public static void main(String[] args) throws IOException {
//1,
BufferedReader in = new BufferedReader(new FileReader("file.txt"));
//2,
//
//
//
String line = null;
while( (line = in.readLine()) != null ){
System.out.println(line);
}
//3,
in.close();
}
}