2022/02/26 Javaの各種機能
9214 ワード
Java I/O用I/Oストリーム
I/Oフローネットワークの例、すなわち、データストリームは水流に等しい. JavaはI/Oストリームを通じて各種I/O機器とは独立した一貫したI/Oを提供する ファイルディスク、キーボード、マウス、ネットワーク、およびメモリの入出力
I/Oフローの区分ターゲット:入力ストリーム/出力ストリーム データ型:バイトストリーム/文字ストリーム 機能:ベースフロー/アシストフロー 入力ストリームと出力ストリーム入力ストリーム:ターゲットからデータを取得するストリーム 出力ストリーム:ターゲットにデータを出力するストリーム
ストリームタイプ
入力フロー:FileInputStream、FileReader、BufferedInputStream、BufferedReaderなど
出力ストリーム:FileOutputStream、FileWider、BufferedOutputStream、BufferedWriterなど
バイトストリームと文字ストリームバイトストリーム:ビデオ、音楽ファイル、実行可能ファイルなどのデータの読み取りおよび書き込みに使用される .文字ストリーム:データがバイト単位で処理されると文字が破壊され、データストリームのバイト数が2個を超えて符号化に適している
ストリームタイプ
バイトストリーム:FileInputStream、FileOutputStream、BufferedInputStream、BufferedOutputStream
文字ストリーム:FileReader、FileWriter、BufferedReader、BufferedWriterなど
ベースフローとセカンダリフローベースのストリーム: ストリームで、直接ターゲットへの読み書きをサポートアシストストリーム:ストリーム は、直接読み書きを必要とせずに追加の機能を提供します.アシストストリームは直接読み書き機能を持たないため、作成者のパラメータとしてベースストリームまたは他のアシストストリームを常に含む
ストリームタイプ
ベースフロー:FileInputStream、FileOutputStream、FileReader、FileWriterなど
2次フロー:InputStreamReader、OutputStreamWriter、BufferedInputStream、BufferedOutputStreamなど
標準I/Oストリーム
システムクラスの標準I/Oメンバー System.out
ひょうじゅんしゅつりょくストリーム
System.out.println(「出力メッセージ」); System.in
標準入力(キーボード)フロー
int d=System.in.read()/シングルバイト読み出し System.err
ひょうじゅんエラーしゅつりょくストリーム
System.err.println(「エラーメッセージ」); バイトレベルI/Oストリーム
InputStream
バイト入力ストリームの最上位抽象クラス
多くの抽象メソッドが宣言され、サブストリームによって継承され、実装されています.
プライマリサブクラス
FileInputStream:ファイルから材料をバイト単位で読み込みます.
ByteArrayInputStream:バイトアレイメモリにバイト単位でデータを読み込みます.
FilterInputStream:セカンダリ・ストリームの親であり、ベース・ストリームでデータを読み込むときに他の機能を提供する
主な方法
int read():入力ストリームから1バイトのデータを読み出します.読み込んだデータのバイト数を返します.
int read(byte b[]):入力ストリームからb[]サイズの資料をb[]に読み出す.読み込んだデータのバイト数を返します
int read(byte b[],int off,int len):読み出したストリームからb[]サイズのデータを格納し、読み出したlenサイズのデータのバイト数を返す
void close():入力ストリームに関連付けられたターゲットリソースを閉じます.
FileInputStreamの例ファイルから を1バイトずつ読み出す.ファイルを1バイトずつ最後の に読み込む.ファイルからバイト配列のデータを読み出す(配列に残りのデータがある可能性があることに注意してください)
OutputStream
バイトレベル出力ストリームの最上位抽象クラス
多くの抽象メソッドが宣言され、サブストリームによって継承され、実装されています.
プライマリサブクラス
FileOutputStream:ファイルにバイトでデータを書き込む
ByteArrayOutputStream:バイトアレイメモリにバイト単位でデータを書き込む
FilterOutputStream:ベースストリームにデータを書き込む際の追加機能を提供するセカンダリストリームの親
主な方法
int write():1バイト出力
int wirte(byte b[]):b[]サイズの資料を出力
int write(byte b[],int off,int len):b[]配列内のデータのoff位置からlenの数でデータを出力する
void flush():一時保存データの出力バッファを強制的に解放してデータを出力する
void close():出力ストリームに関連付けられたターゲットリソースを閉じます.出力バッファが空です
flush()とclose()メソッド
flush()メソッドを使用して出力バッファ をクリア close()メソッドでflush()が呼び出されるため、close()メソッドが呼び出されると出力バッファは空の となる.
文字単位のI/Oストリーム
Reader
文字入力ストリームの最上位抽象クラス
多くの抽象メソッドが宣言され、サブストリームによって継承され、実装されています.
プライマリサブクラス
FileReader:ファイルから文字単位で読み込まれたストリームクラス
InputStreamReader:バイト単位で読み取ったデータを文字に変換するためのセカンダリストリームクラス
BufferedReader:サブストリームで、文字を読み取るときに配列を提供し、1回の読み取り機能を提供します.
主な方法
int read():ファイルから文字を読み出します.既読文字を返す
int read(char[]buf):buf配列の文字をファイルから読み出す
int read(char[]buf,int off,int len):buf配列のoff位置からlen個数までの文字をファイルから読み出す
void close():入力ストリームに関連付けられたターゲットリソースを閉じる
FileReaderファイルから文字 を読み込む.
文字単位出力ストリームの最上位抽象クラス
多くの抽象メソッドが宣言され、サブストリームによって継承されて実装されています.
プライマリサブクラス
FileWriter:ファイルに文字単位で出力されるストリームクラス
OutputStreamWriter:バイト単位のデータを文字に変換して出力する補助ストリームクラス.
BufferedWriter:サブストリーム、文字の書き込み時に配列を提供し、一括書き込み機能を提供する
主な方法
int write(int c):ファイルに1文字を書き込む
int write(char[]buf):文字配列bufの内容を出力する
int write(char[]buf,int off,int len):文字配列bufのoff位置からlen個数を出力する文字
int write(String str):出力文字列str
int wirte(String str,int off,int len):文字列strのoff文字からlenを出力する個数
int flush():出力する前に、データがあるスペース(出力バッファ)を空けて出力してください
void close():ストリームに関連するリソースを閉じ、出力バッファも空
多くの補助フロークラス
ほじょりゅうストリーム は、実際の読み書きストリームではなく、補助機能を提供する. FilterInputStreamおよびFilterOutputStreamは、セカンダリストリームの最上位 です.作成者のパラメータで、別のストリーム(ベースストリームまたは他の補助ストリーム) を持つ Decorator Pattern, 親作成者
保護されたFilterInputStreamと:構造関数のパラメータとしてInputStreamを受け入れる
共通FilterOutputStream(OutputStream out):構造関数のパラメータとしてOutputStreamを受信する
InputStreamReaderとOutputStreamWriter
補助ストリームは、バイト単位の読み書き材料を文字に変換するために使用される
例 FileInputStream読み出したデータを文字に変換
2番目のストリーム は、の約8 Kのアレイを提供し、高速I/Oを実現する BufferedReaderおよびBuffered Writerは、文字にI/O補助ストリーム を提供する.
例 BufferedInputStreamおよびBufferedOutputStreamを使用してファイルをコピーする ストリーム メモリに格納 DataInput Streamメソッド
DataOutputStreamメソッド
I/Oフロー
入力フロー:FileInputStream、FileReader、BufferedInputStream、BufferedReaderなど
出力ストリーム:FileOutputStream、FileWider、BufferedOutputStream、BufferedWriterなど
バイトストリーム:FileInputStream、FileOutputStream、BufferedInputStream、BufferedOutputStream
文字ストリーム:FileReader、FileWriter、BufferedReader、BufferedWriterなど
ベースフロー:FileInputStream、FileOutputStream、FileReader、FileWriterなど
2次フロー:InputStreamReader、OutputStreamWriter、BufferedInputStream、BufferedOutputStreamなど
システムクラスの標準I/Oメンバー
public class System{
public static PrintStream out;
public static InputStream in;
public static PrintStream err;
}
ひょうじゅんしゅつりょくストリーム
System.out.println(「出力メッセージ」);
標準入力(キーボード)フロー
int d=System.in.read()/シングルバイト読み出し
ひょうじゅんエラーしゅつりょくストリーム
System.err.println(「エラーメッセージ」);
InputStream
バイト入力ストリームの最上位抽象クラス
多くの抽象メソッドが宣言され、サブストリームによって継承され、実装されています.
プライマリサブクラス
FileInputStream:ファイルから材料をバイト単位で読み込みます.
ByteArrayInputStream:バイトアレイメモリにバイト単位でデータを読み込みます.
FilterInputStream:セカンダリ・ストリームの親であり、ベース・ストリームでデータを読み込むときに他の機能を提供する
主な方法
int read():入力ストリームから1バイトのデータを読み出します.読み込んだデータのバイト数を返します.
int read(byte b[]):入力ストリームからb[]サイズの資料をb[]に読み出す.読み込んだデータのバイト数を返します
int read(byte b[],int off,int len):読み出したストリームからb[]サイズのデータを格納し、読み出したlenサイズのデータのバイト数を返す
void close():入力ストリームに関連付けられたターゲットリソースを閉じます.
public class FileInputStreamTest1 {
public static void main(String[] args) {
FileInputStream fis=null;
try {
fis=new FileInputStream("input.txt");
System.out.println((char)fis.read());
System.out.println((char)fis.read());
System.out.println((char)fis.read());
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}catch (Exception e2){
System.out.println(e2);
}
}
System.out.println("end");
}
}
public class FileInputStreamTest2 {
public static void main(String[] args) {
try(FileInputStream fis = new FileInputStream("input.txt")){
int i;
while ( (i = fis.read()) != -1){
System.out.println((char)i);
}
System.out.println("end");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public class FileInputStreamTest3 {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("input2.txt")){
byte[] bs = new byte[10];
int i;
while ( (i = fis.read(bs)) != -1){
/*for(byte b : bs){
System.out.print((char)b);
}*/
for(int k= 0; k<i; k++){
System.out.print((char)bs[k]);
}
System.out.println(": " +i + "바이트 읽음" );
}
/*while ( (i = fis.read(bs, 1, 9)) != -1){
for(int k= 0; k<i; k++){
System.out.print((char)bs[k]);
}
System.out.println(": " +i + "바이트 읽음" );
}*/
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("end");
}
}
QRSTもあるので、第3話の時にQRSTを見ることができます.OutputStream
バイトレベル出力ストリームの最上位抽象クラス
多くの抽象メソッドが宣言され、サブストリームによって継承され、実装されています.
プライマリサブクラス
FileOutputStream:ファイルにバイトでデータを書き込む
ByteArrayOutputStream:バイトアレイメモリにバイト単位でデータを書き込む
FilterOutputStream:ベースストリームにデータを書き込む際の追加機能を提供するセカンダリストリームの親
主な方法
int write():1バイト出力
int wirte(byte b[]):b[]サイズの資料を出力
int write(byte b[],int off,int len):b[]配列内のデータのoff位置からlenの数でデータを出力する
void flush():一時保存データの出力バッファを強制的に解放してデータを出力する
void close():出力ストリームに関連付けられたターゲットリソースを閉じます.出力バッファが空です
flush()メソッドを使用して
文字単位のI/Oストリーム
Reader
文字入力ストリームの最上位抽象クラス
多くの抽象メソッドが宣言され、サブストリームによって継承され、実装されています.
プライマリサブクラス
FileReader:ファイルから文字単位で読み込まれたストリームクラス
InputStreamReader:バイト単位で読み取ったデータを文字に変換するためのセカンダリストリームクラス
BufferedReader:サブストリームで、文字を読み取るときに配列を提供し、1回の読み取り機能を提供します.
主な方法
int read():ファイルから文字を読み出します.既読文字を返す
int read(char[]buf):buf配列の文字をファイルから読み出す
int read(char[]buf,int off,int len):buf配列のoff位置からlen個数までの文字をファイルから読み出す
void close():入力ストリームに関連付けられたターゲットリソースを閉じる
public class FileReaderTest {
public static void main(String[] args) {
try(FileReader fr=new FileReader("reader.txt")){
int i;
while ((i =fr.read())!=-1){
System.out.print((char) i);
}
}catch(IOException e){
System.out.println(e);
}
}
}
Writer文字単位出力ストリームの最上位抽象クラス
多くの抽象メソッドが宣言され、サブストリームによって継承されて実装されています.
プライマリサブクラス
FileWriter:ファイルに文字単位で出力されるストリームクラス
OutputStreamWriter:バイト単位のデータを文字に変換して出力する補助ストリームクラス.
BufferedWriter:サブストリーム、文字の書き込み時に配列を提供し、一括書き込み機能を提供する
主な方法
int write(int c):ファイルに1文字を書き込む
int write(char[]buf):文字配列bufの内容を出力する
int write(char[]buf,int off,int len):文字配列bufのoff位置からlen個数を出力する文字
int write(String str):出力文字列str
int wirte(String str,int off,int len):文字列strのoff文字からlenを出力する個数
int flush():出力する前に、データがあるスペース(出力バッファ)を空けて出力してください
void close():ストリームに関連するリソースを閉じ、出力バッファも空
ほじょりゅう
保護されたFilterInputStreamと:構造関数のパラメータとしてInputStreamを受け入れる
共通FilterOutputStream(OutputStream out):構造関数のパラメータとしてOutputStreamを受信する
補助ストリームは、
例
public class InputStreamReaderTest {
public static void main(String[] args) {
try(InputStreamReader isr = new InputStreamReader(new FileInputStream("reader.txt"))){
int i;
while( (i = isr.read()) != -1){ //보조 스트림으로 읽습니다.
System.out.print((char)i);
}
}catch(IOException e) {
e.printStackTrace();
}
}
}
BufferedInputStreamとBufferedOutputStream2番目のストリーム
例
public class BufferedStreamTest {
public static void main(String[] args) {
long millisecond = 0;
try(FileInputStream fis = new FileInputStream("a.zip");
FileOutputStream fos = new FileOutputStream("copy.zip");
BufferedInputStream bis = new BufferedInputStream(fis);
BufferedOutputStream bos = new BufferedOutputStream(fos)){
millisecond = System.currentTimeMillis();
int i;
while( ( i = bis.read()) != -1){
bos.write(i);
}
millisecond = System.currentTimeMillis() - millisecond;
}catch(IOException e) {
e.printStackTrace();
}
System.out.println("파일 복사 하는 데 " + millisecond + " milliseconds 소요되었습니다.");
}
}
DataInputStreamとDataOutputStreamReference
この問題について(2022/02/26 Javaの各種機能), 我々は、より多くの情報をここで見つけました https://velog.io/@dolljang/20220226-자바의-다양한-기능들-skv70fmcテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol