まず、プロセスフロー:
機能強化、パフォーマンスを提供し、ストリーム上のノード。
ノード及びプロセスフローストリームとの間の第二関係
ノードストリーム(バイトストリーム、文字ストリーム)で IO 最初のライン操作、すべての操作は、それらを介して行われなければなりません。
プロセスストリームは、他のストリームの(効率や運用の柔軟性を向上させるために)処理されてもよいです。
第三に、バッファの流れ
1 、バッファバイトストリーム
BufferedInputStreamを
なBufferedOutputStream
パッケージIOBuffer;
輸入java.io.BufferedInputStreamの。
輸入java.io.BufferedOutputStream。
インポートのjava.io.File;
輸入java.io.FileInputStream;
輸入java.io.FileOutputStreamは、
インポートにjava.io.IOException;
輸入java.io.InputStreamを。
インポートにjava.io.OutputStream;
/ **
* プロセスストリーム(ストリームバッファバイト)
* バイトストリームファイルがコピーされます+のバッファの流れを、パフォーマンスを向上させます
* バッファストリーム(ストリームノード)
* /
@SuppressWarnings( "すべて")
パブリッククラスDemo01 {
パブリック静的無効メイン(文字列[] args){
ストリングsrcPath = "G:/1314.jpg"。
ストリングDESTPATH = "G:/try/520.jpg"。
{試します
コピーファイル(srcPath、DESTPATH)。
}キャッチ(IOExceptionを電子){
e.printStackTrace();
}
}
パブリック静的ボイドコピーファイル(文字列srcPath、文字列DESTPATH)は、IOExceptionがスローされます
{
// 1 、連絡先ソースが存在する確立する(およびファイル)+ 先(ファイルが存在しなくてもよいです)
ファイルSRC =新しいファイル(srcPath)。
ファイルのDEST =新しいファイル(DESTPATH)。
(もし!src.isFile())
{
System.out.println(「ファイルのみをコピーすることができます」);
(「新しいIOExceptionをスローファイルのみをコピーすることができます」);
}
// 2 、バッファフローストリーム選択(バイトの入力ストリーム)
InputStreamが=新しいBufferedInputStreamを(新しいFileInputStreamを(SRC))です。
OutputStreamのOS =新なBufferedOutputStream(新しいのFileOutputStream(DEST));
3 // 、ファイルのコピーサイクル+ 読み+ 書き
バイト[]フラッシュ=新しいバイト[1024];
int型のlen = 0;
しばらく(-1!=(LEN = is.read(フラッシュ)))
{
// 書き込み
os.write(フラッシュ、0、LEN)。
}
os.flush(); // ブラシを強制
// 最初の開閉後にストリームを閉じます
os.close();
近くにあります();
}
}
2 、文字ストリームバッファ
BufferedReaderの 新しいのreadLine()テキストの行を読み込みます。
BufferedWriterの 新しい改行()行区切り文字を書き込みます。
パッケージIOBuffer;
輸入java.io.BufferedReader;
輸入java.io.BufferedWriter。
インポートのjava.io.File;
輸入java.io.FileNotFoundException。
輸入java.io.FileReader。
輸入java.io.FileWriter;
インポートにjava.io.IOException;
/ **
*
* 文字ストリームバッファ+ 新しい方法(マルチ状態が発生することができません)
* /
パブリッククラスDemo02 {
パブリック静的無効メイン(文字列[] args){
ストリングsrcPath = "G:/oo.txt"。
ストリングDESTPATH = "G:/xx.txt"。
// ソースを作成します。
ファイルSRC =新しいファイル(srcPath)。
ファイルのDEST =新しいファイル(DESTPATH)。
// 選択フローストリームバッファ後者は新しいメソッドを使用している場合、多型を使用することはできません。
// 新しいサブクラスは、ポリモーフィック使用できない場合。
/ *リーダーリーダー= NULL;
ライターライター= NULL;
リーダー=新しいBufferedReaderの(新規FileReader(SRC))。
ライター=新しいBufferedWriterの(新しいてFileWriter(DEST));
reader.read(フラッシュ)
writer.write(フラッシュ、0、LEN)* /
BufferedReaderのリーダー= NULL;
BufferedWriterのライター= NULL;
{試します
リーダー=新しいBufferedReaderの(新規FileReader(SRC))。
ライター=新しいBufferedWriterの(新しいてFileWriter(DEST));
// 読み出し動作
// バッファされたストリームを操作する新しい方法のキャラクター
文字列の行= NULL; // 読み込む行ずつBufferedReaderの新しいのreadLine()を
しばらく(ヌル!=(ライン= reader.readLine()))
{
writer.write(ライン)。
//writer.append("\r\n");// 改行
writer.newLine(); // 行の新しい方法を破ります
}
writer.flush();
}キャッチ(にFileNotFoundException電子){
e.printStackTrace();
System.out.println(「ファイルが存在しません」);
}キャッチ(IOExceptionを電子){
e.printStackTrace();
}
最後に
{
(ヌル!=リーダー)の場合
{
{試します
writer.close();
reader.close();
}キャッチ(IOExceptionを電子){
e.printStackTrace();
}
}
}
}
}
第四に、変換ストリーム
(A)文字ストリーム、プロセス歪みにバイトストリーム(コードセット、セットデコード)
デコーディング:バイナリ - > デコード文字セット- > キャラ
エンコード:文字 - > 符号化文字集合- > バイナリ
(B)どうして文字化けしていますか?
1 、デコードおよび実際のMT4口座のチュートリアルログイン符号化文字集合は一様ではありません
2 、バイトが欠落している、失われた長さ
(転流によって治療)(iii)のファイルハッシュ
パッケージIOConver;
輸入java.io.UnsupportedEncodingException。
パブリッククラスDemo01 {
パブリック静的無効メイン(文字列[] args){
TEST01();
System.out.println( "-----------");
TEST02();
}
// コード化文字セットが同じ文字セットでなければなりませんデコード
パブリック静的ボイドTEST01()
{
// デコードバイト- > CHAR
文字列str = " 中国"; // UTF-8
// コーディングのchar - >バイト
バイト[]データ=のstr.getBytes()。
// 統一の文字セットのエンコードとデコード
System.out.println(新しい文字列(データ));
{試します
データ=のstr.getBytes( "GBK") ; // セット符号化された文字セットエンコーディング
// 文字化けしませ統一文字セット、
System.out.println(新しい文字列(データ)) ; // デコード
}キャッチ(にUnsupportedEncodingException電子){
e.printStackTrace();
}
バイト[] DATA2。
{試します
// コーディング
DATA2 = " 中国" .getBytes( "GBK")。
// デコード
列str =新しい文字列(DATA2、 "GBK");
//列str =新しい文字列(DATA2) ; // デフォルトのデコードを指定しないUTF-8 文字化けを
System.out.println(新しいString(文字列));
}キャッチ(にUnsupportedEncodingException電子){
e.printStackTrace();
}
}
// バイトが行方不明、行方不明の長さ
パブリック静的ボイドTEST02(){
文字列str =「中国」。
[]データバイト。
データ= str.getBytes(); // 符号化
// バイト数は完全ではありません
System.out.println(新しい文字列(データ、0,4));
}
}
結果:
й
中国
-----------
で
パッケージIOConver;
輸入java.io.BufferedReader;
輸入java.io.BufferedWriter。
インポートのjava.io.File;
輸入java.io.FileInputStream;
輸入java.io.FileOutputStreamは、
インポートにjava.io.IOException;
輸入java.io.InputStreamReader。
輸入java.io.OutputStreamWriterが、
/ **
* 変換ストリーム:バイト文字に
* 1 、出力ストリームのOutputStreamWriterの エンコーディング
* 2 、入力ストリームInputStreamReaderの デコード
* /
パブリッククラスDemo02 {
公共の静的な無効メイン(文字列[]引数)はIOExceptionが{スロー
// 入力ファイルのデコード(文字のバイトが) 表示されるように読まれます
// デコードされた文字を指定して設定 をBufferedReaderの文字ストリーム--InputStreamReader 転流--FileInputStream バイトストリームを
BufferedReaderのBR =新しいBufferedReaderの
(
新しいInputStreamReaderの
(
新しいFileInputStreamを(新しいファイル( "G:/writer.txt"))、 "UTF-8"
)
); // 文字セットのデコードを指定
// ファイルのエンコーディング(文字・ツー・バイト)を書き込みます
BufferedWriterの幅BW =新しいBufferedWriterの
(
新しいのOutputStreamWriter
(
新しいのFileOutputStream(新しいファイル( "G:/try/abdec.txt"))、 "UTF-8"
)
);
文字列情報= NULL;
しばらく(ヌル!=(情報= br.readLine()))
{
System.out.println(情報)。
bw.write(情報+ "\ rを\ n" は);
}
bw.flush();
bw.close();
br.close();
}
}
結果:
誰もが、彼らの若さを持っています
それぞれの若者が、物語を持っています
それぞれの物語は後悔を持っています、
残念ながら、彼の素晴らしいのそれぞれが、何もありません。ouye
----------------
オリジナルリンク: https://blog.csdn.net/scgaliguodong123_/article/details/45932481