관리 메뉴

오버플로

[Java] IO Stream 활용 (2) - 파일 쓰기 본문

Java

[Java] IO Stream 활용 (2) - 파일 쓰기

NACO 2021. 8. 31. 23:24

~전편에 이어서 2~

오늘은 Stream으로 파일 쓰기!

 

 1. 8bit Stream 활용 

- 전 편에서 사용했던 java_test.txt 파일을 읽어서 새로운 파일을 써보자

- test라는 글자가 적혀있음

- FileInputStream과 FileOutputStream을 사용하면 됨

- 파일 복사도 1byte씩 읽어들인 것을 다른 파일에 flush하면서 진행됨 

  >> byte의 array를 만들어서 1byte가 아니라 더 많은 byte를 읽어들이면 파일 복사 효율 증대

 

# 코딩 #

- 이전에 만들었던 클래스에서 이어서 method 작성!

	/**
	 * 8bit Stream 사용하여 text 파일 쓰기
	 * 
	 * @throws IOException
	 */
	public void usestream3() throws IOException {
		File inFile = new File("C:/Users/user/Desktop/java_test.txt"); // 읽어올 파일
		File outFile = new File("C:/Users/user/Desktop/java_output_test.txt"); // 작성할 파일

		FileInputStream fis = new FileInputStream(inFile); // 파일에 스트림 연결
		FileOutputStream fos = new FileOutputStream(outFile); // 파일에 스트림 연결

		int val = 0;
		while ((val = fis.read()) != -1) { // 읽어들일 데이터가 없을 때까지 while 실행
			fos.write(val); 읽어들인 데이터를 val에 넣고 새 파일에 write
		}
		fis.close(); // 스트림 닫자!
		fos.close();

	}// usestream3

 

# 출력 결과 #

새로운 파일이 복사되었고 test 문장이 잘 나왔다!

복사된 파일
출력 결과창

 


 

2. 16bit Stream 활용

- 이번에는 한글을 작성해보자

- 한글은 16bit Stream 이용해야함!

- Java에서 기본형 데이터형의 경우에는 flush()를 하지 않더라도 Stream에 있는 데이터가 HDD로 나가지만, 

  다른 데이터의 경우에는 꼭 flush()를 해주어야 함!!

 

# 코딩 #

	/**
	 * 16bit Stream 사용하여 text 파일 쓰기
	 * 
	 * @throws IOException
	 */
	public void usestream4() throws IOException {
		File file = new File("C:/Users/user/Desktop/java_output_test2.txt"); // 생성할 파일

		BufferedWriter bw = new BufferedWriter(new FileWriter(file));

		bw.write("안녕하세요");
		bw.flush(); // 데이터 내보내기
		bw.close(); // 스트림 닫자

	}// usestream4

# 출력 결과 #

한글도 데이터 내보내기 완료!

새로 생긴 파일
출력 결과창

 

Comments