20日目補助ストリームとI/O!
FileInputStream
ファイルからバイト単位で取得する場合に使用
画像、オーディオ、ビデオ、テキストなど、任意のタイプのファイルを読み込むことができます.
InputStreamサブクラス
FileOutputStream
ファイルにデータをバイト単位で格納
画像、オーディオ、ビデオ、テキストなどのすべてのタイプのデータをファイルとして保存
OutputStreamサブクラス
FileReader
テキストファイルからデータを取得する
リーダサブクラス
FileWriter
テキストファイルに文字データを格納する
Writerサブクラス
ほじょりゅう
ストリームは他のストリームに接続され、さまざまな便利な機能を提供します.
≪セカンダリ・フロー・チェーン|Help Flow Chain|oem_src≫:ロールを実行するために他のセカンダリ・フローに関連付けられます.
-文字変換補助ストリーム
ソースストリームはバイトベースのストリームですが、データが文字の場合に使用します。
文字セットのタイプを指定できるので、異なる文字を入力できます.
-------------------------------------------입력 문자변환 보조스트림 ------------------------------
public static void main(String[] args) throws Exception {
InputStream is = System.in;
Reader reader = new InputStreamReader(is); // 보조스트림으로 연결 보조스트림은 자식중 하나다
int readCharNo;
char[] cbuf = new char[100]; // 보조스트림 연결해서 byte로 안해도 된다.
System.out.println("prompt >>>");
while ((readCharNo = reader.read(cbuf)) != -1 ) {
String data = new String(cbuf, 0 ,readCharNo);
System.out.println(data);
} // while
}//main
-------------------------------------------출력 문자변환 보조스트림---------------------------------
public static void main(String[] args) throws Exception {
FileOutputStream fos = new FileOutputStream("C:/Temp/file.txt");
// 바이트기반의 OutputStream => 문자기반의 Writer로 변환해주는 보조스트림
Writer writer = new OutputStreamWriter(fos);
// Writer writer = new OutputStreamWriter(fos, "UTF-8");
// Writer writer = new OutputStreamWriter(fos, Charset s); <<이 부분
// Charset 타입의 객체를 얻는 방법 :
Charset charset1 = Charset.defaultCharset(); // MS949 (windows)
Charset charset2 = Charset.forName("UTF-8"); // UTF-8
Charset charset3 = StandardCharsets.UTF_8; // UTF-8
String data = "바이트 출력 스트림을 문자 출력 스트림으로 변환 ";
writer.write(data);
writer.flush();
writer.close();
System.out.println("파일 저장이 끝났습니다.");
} //main
-パフォーマンス向上支援フロー
(1)I/O性能に影響するI/Oソース
I/Oソースと直接対話せずにバッファと操作
バッファは、速度差の大きい2つのターゲットがI/Oを実行する際に効率を向上させるための一時的な記憶領域です.
>説明:
CPU内部のキャッシュメモリに比べて、バッファの使用メモリ速度は遅くなりますが、使用メモリ速度はずっと速いです.セカンダリメモリは、プライマリメモリのバッファにデータを集中します.CPUの処理速度が速いため、他の滞積を処理した後、空き時間にバッファをチェックしてデータがすべて蓄積されていることを確認し、データがすべて蓄積されている場合はインポートして一度に処理することがあります.
(2)BufferedInputStream, BufferedReader
(バッファ使用前と使用後の差は227倍です.)
(3)BufferedOutputStreamとBufferedWriter
-主タイプI/O補助フロー
-プリンタのセカンダリフロー
-print fの使い方
-PrintStream
グループ化作業があります.
public class FileOutputStreamExample3 {
// 파일 복사 예제
public static void main(String[] args) throws Exception {
while (true) {
// 1. 폴더 만들기
// 날짜로 폴더이름
Date now = new Date();
String format = "yyyy-MM-dd HH.mm";
DateFormat df = new SimpleDateFormat(format);
String fileName = df.format(now);
// 폴더 새로 생성
File dir = new File("C:/Temp/" + fileName);
if (dir.exists() == false) {
dir.mkdirs();
}
Calendar now2 = Calendar.getInstance();
int second = now2.get(Calendar.SECOND);
if(dir.exists() == true && (second == 1 || second == 31)) {
// 2. 파일 복사
// 파일 이름 랜덤으로 바꿔줌.
UUID uuid = UUID.randomUUID();
String sourceFileName = "C:/Temp/source.pdf";
String targetFileName = "C:/Temp/" + fileName + "/" + uuid + ".pdf";
FileInputStream fis = new FileInputStream(sourceFileName);
FileOutputStream fos = new FileOutputStream(targetFileName);
int readByteNo;
byte[] readBytes = new byte[40];
while ((readByteNo = fis.read(readBytes)) != -1) {
fos.write(readBytes, 0, readByteNo);
} // while
fos.flush();
fos.close();
fis.close();
} //if
} // while
}//main
```
쓰레드를 사용한 방법도 있었지만 내 기준에서는 아직 우리는 쓰레드 진도를 나가지 않았기에 이것이 괜찮다고 생각했다.
이렇게 의견을 서로 주고받으면서도 내가 정리가 안되고 막던지는 의견 속에 받아들여지는 것도 있고 아닌 것도 있지만 대체로 걸러진다ㅋ..ㅋ
나는 내 의견 들으려조차 않는 모습이 보여도 물론 시간이 없으니까..
but 나 여기서 포기하지 않아 더 공부해서 내가 옳다는 것을 예쁘게 정리해서 보여주겠어
그래도 우리조 다들 너무 열심히하고 좋다! 나도 더 열심히하고 더 열심히 해서 축구발전에 이바지할 수 있는 컨텐츠를 만들거야 프로그래밍은 도구!
도구를 가장 잘사용해서 목적을 이룬다.
Reference
この問題について(20日目補助ストリームとI/O!), 我々は、より多くの情報をここで見つけました https://velog.io/@koo9b9h/20일차-보조스트림과-입출력テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol