IOストリーミングの概念
フロー:線形、方向性。
IO:入力(入力)および出力(出力)。
JAVAでのIOストリームの分類:
インターネットからの写真
バイトストリーム:
Javaの最下位レベルのストリームは、任意のファイル(プレーンテキスト、ビデオ、画像、サウンドなど)をバイト単位で読み書きできます。
理由:すべてが「バイト」である
A)出力ストリーム:OutputStream(抽象クラス)
B)入力ストリーム:InputStream(抽象クラス)
文字ストリーム:
バイトストリームに基づいて、文字を単位として「プレーンテキスト」ファイルを読み書きし、一度に複数のバイトを読み取るのは非常に便利です。(プレーンテキストデータの処理である限り、バイトストリームの使用に加えて、文字ストリームの使用が優先されます。)
A)出力ストリーム:
B)入力ストリーム:
IO stream_byte出力stream_FileOutputStream:
構築方法:
1)新しいFileOutputStream(文字列名):(上書き)ファイル出力ストリームを作成し、指定した名前でファイルに書き込みます。
2).FileOutputStream(String name、boolean append)(Append)ファイル出力ストリームを作成し、指定された名前でファイルに書き込みます。
3).FileOutputStream(ファイルファイル):(上書き)指定されたFileオブジェクトで表されるファイルに書き込むファイル出力ストリームを作成します。
4)。FileOutputStream(ファイルファイル、ブール型追加)(追加)指定されたFileオブジェクトで表されるファイルに書き込むファイル出力ストリームを作成します。
注:すべての「出力ストリーム」がJavaで構築されている場合、ファイルは存在せず、自動的に作成されます。
バイト書き込み(出力)メソッド:(3種類)
A).write(int b):バイトを出力;
B).write(byte [] byteArray):バイト配列を出力;
C).write( byte [] byteArray、int off、int len):バイト配列の一部を出力します;
1)。byteArray:書き込む配列;
2)。off:開始位置のインデックス;
3)。len:出力の数;
public static void main(String[] args) throws IOException {
//1.构造方法:
FileOutputStream out = new FileOutputStream("demo.txt",false);
//2.输出的方法:
//2-1:write(int b):输出一个字节
out.write(97);//97 --> 转换为二进制: 0110 0001 --> 写入文件:0110 0001
out.write(999997);//999997 -->转换为二进制:111101000010 0011 1101 --> 取最低的一个字节:写入文件:0011 1101
//2-2:write(byte[] byteArray):输出多个字节
byte[] byteArray = {97, 98, 99, 100};
out.write(byteArray);
//间接的输出一个“字符串”
out.write("大家好,呵呵".getBytes());
//输出一个换行符:
out.write("\r\n".getBytes());
//2-3:write(byte[] byteArray,int offset,int len):
//例如:写入byteArray数组中的99,100
out.write(byteArray,2,2);
//关闭流--释放资源
out.close();
}
IO stream_byte入力stream_FileInputStream:
1)。構築方法:
1. FileInputStream(文字列名)実際のファイルとの接続を開いてFileInputStreamを作成します。ファイルには、ファイルシステムのパス名で名前が付けられます。
2.FileInputStream(ファイルファイル)実際のファイルとの接続を開いてFileInputStreamを作成します。ファイルは、ファイルシステム内のFileオブジェクトファイルによって名前が付けられます。
注:Javaでのすべての「入力ストリーム」の構築中に、ファイルが存在する必要があります。そうでない場合、例外がスローされます。
読み取り方法:
1).public int read():バイトを読み取ります
2).public int read(バイト[ ] byteArray):複数のバイトを読み取り、それらをパラメーター配列にカプセル化します。
public class Demo {
public static void main(String[] args) throws IOException {
File file = new File("demo.txt");
if (!file.exists()) {
file.createNewFile();
}
FileInputStream in = new FileInputStream(file);
//读一个字节
/*int b = 0;
while ((b = in.read()) != -1) {
System.out.println((char)b);
}*/
//读取多个字节:3个
byte[] byteArray = new byte[3];
int len = 0;
while ((len = in.read(byteArray)) != -1) {
//将 byte[]数组转换为String
String str = new String(byteArray,0,len);
System.out.println("转换为String后:" + str);
}
}
}
IO stream_character stream_outputストリームFileWriter
(システムのデフォルトの文字セットのみを使用できます)
構築メソッド:
1)。FileWriter(String fileName)は、ファイル名を使用してFileWriterオブジェクトを構築します。
2)。FileWriter(String fileName、boolean append)はFileWriterオブジェクトを構築し、書き込まれたデータを追加するかどうかを示すブール値を持つファイル名を指定します。
3)。FileWriter(ファイルファイル)FileオブジェクトのFileWriterオブジェクトを作成します。
4)。FileWriter(ファイルファイル、ブール型追加)(追加)をFileオブジェクトに追加して、FileWriterオブジェクトを作成します。
出力方法:
1).write(int c):文字を出力する;
2).write(char [] chArray):文字配列を出力する;
3).write(char [] chArray、int off、int len):出力する文字配列の一部;
4).write(文字列str):文字列を出力;
5).write(文字列str、int off、int len):出力文字列の一部;
public static void main(String[] args) throws IOException {
//注意:构造时,文件可以不存在,会自动创建
FileWriter out = new FileWriter("demo.txt");
//**********五个输出的方法*************************************//
//1.write(int c):输出一个字符
out.write(98);
//2.write(char[] chArray):输出一个字符数组
char[] chArray = {'a','b','你','好','呵','呵'};
out.write(chArray);
//3.write(char[] chArray,int off,int len("输出字符数组的一部分;
out.write(chArray,4,2);
//4.write(String s):输出一个字符串
out.write("我爱IO");
//5.write(String s,int off,int len):输出字符串的一部分
String str = "北京天安门前";
out.write(str,4,3);
//*******************输出换行************************//
out.write("\r\n");
out.write("你好");
//刷新缓存区
// out.flush();
//注意:"字符流"内部自带缓存区,write()之后一定要flush()/close()才能
//将缓存区的数据写入到文件。
out.close();//相当于:flush() + close()
}
文字stream_inputストリームFileReader:
構築方法:
1).FileReader(String fileName)読み取るファイルの名前を指定して、新しいFileReaderを作成します。
2).FileReader(ファイルファイル)新しいFileReaderを作成し、ファイルに読み取りを与えます。
読み取り方法:
1).int read():文字を読み取ります。戻り値は読み取った文字の「エンコーディング」です
2).int read(char [] chArray):複数の文字を読み取り、文字に格納します配列内。
戻り値は、読み取られた文字の「数」です。
public static void main(String[] args) throws IOException {
FileReader in = new FileReader("demo03.txt");
//一次读取一个字符
/*int c = 0;
while ((c = in.read()) != -1) {
System.out.println("读取的字符:" + (char)c);
}*/
//一次读取一个字符数组
char[] chArray = new char[2];
int len = 0;
while ((len = in.read(chArray)) != -1) {
//可以将一个字符数组的一部分转换为String
String str = new String(chArray,0,len);
System.out.println(str);
}
in.close();
}
文字ストリームとバイトストリームの変換
変換ストリームの機能:
1.これは、文字ストリームとバイトストリーム間のブリッジです
。2.読み取られたバイトデータ
は、指定されたエンコーディングを介して文字に変換できます。3 .読み取られた文字データは、指定されたエンコーディングを介してバイトに変換できます。
いつ変換ストリームを使用するのですか?
1.バイトと文字の間の変換アクションがある場合;
2.ストリーム操作のデータをエンコードまたはデコードする必要がある場合。
3.特定のオブジェクトマニフェスト:
InputStreamReader:バイトから文字へのブリッジ
OutputStreamWriter:文字からバイトへのブリッジ
これらの2つのストリームオブジェクトは文字システムのメンバーであり、変換効果があり、それ自体が文字ストリームであるため、構築されます。場合によっては、バイトストリームオブジェクトを渡す必要があります。