inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션

정리 질문있습니다

109

조소영

작성한 질문수 32

0

안녕하세요 I/O 흐름을 제가 제대로 이해했는지 궁금합니다...

 

I/O class : byte class / String class 로 나뉨

 

byte class

output 위주로 정리

  1. 기본스트림(FileOutputStream)을 사용하여 1byte씩 loop를 사용해서 쓰기

  2. byte array 사용하여 배열 사이즈 만큼 쓰기

  3. 보조스트림(BufferedOutputStream)을 사용하여 쓰기

 

String class

  1. 기본스트림(FileOutputStream) 과 String.getBytes(charset)을 사용하여 직접 인코딩하여 쓰기

  2. 보조스트림(OutputStreamWriter : 인코딩 대신 처리)사용하여 쓰기

  3. FileWriter(FileOutputStream을 내부에서 생성 / OutputStreamWriter 상속) 사용하여 쓰기

     

질문1) 위의 흐름이 맞을까요?

질문2) String class 는 인코딩을 해야하지만 byte class 인코딩을 하지 않는다.

 

두가지 질문이 맞을까요?

 

java 네트워크 객체지향

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 조소영님.

I/O 클래스와 관련된 흐름에 대한 질문을 주셨군요. 질문에 대한 답변을 드리겠습니다.

질문 1) 흐름을 제대로 이해했는지?

Byte Class:
1. FileOutputStream을 통해 1 byte씩 loop를 사용하여 쓰는 방법은 기본적인 접근 방식입니다.
2. byte 배열을 통해 배열의 크기만큼을 한 번에 쓰는 것도 효율적인 방법입니다.
3. BufferedOutputStream은 데이터를 버퍼에 임시 저장하여 출력 성능을 향상시킵니다.

String Class:
1. FileOutputStreamString.getBytes(charset)을 사용하여 문자열을 직접 인코딩해 쓰는 방법도 있습니다.
2. OutputStreamWriterOutputStream에 쓰기 전에 문자열을 특정 charset으로 인코딩하는 역할을 합니다.
3. FileWriter는 사실 OutputStreamWriter를 상속 받지 않지만, 내부적으로 FileOutputStream을 사용하여 문자 데이터를 파일로 쉽게 쓸 수 있는 클래스입니다.

질문 2) String class는 인코딩이 필요하지만 byte class는 인코딩을 하지 않는다?

네, 일반적으로 문자열은 다양한 문자 집합(charset)으로 인코딩될 수 있기 때문에 String class의 경우 인코딩이 필요합니다. 반면 byte data는 이미 byte 형태로 표현되므로 별도의 인코딩이 필요하지 않습니다. 오히려 이미 인코딩된 바이트 데이터를 처리하는 경우가 많습니다.

자바의 I/O 클래스 체계에 대해 더 알아보고 싶으시다면 다음 URL을 참고하시면 도움이 될 것입니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

RequestHandler 버전 간 process() 파라미터 차이 질문

0

76

2

리플렉션 default

0

57

1

그럼 SOURCE나 CLASS는 어떤 경우에 사용하나요?

0

83

2

네트워크 프로그램 자원종료 Socket 정리 시 closed 사용 문의

0

105

2

FileInputStream의 transferTo 사용 시 Buffer 문의

0

67

1

오타 제보 드립니다

0

76

2

강좌 복습 팁이 있으신 분들 공유해주시면 감사하겠습니다.

0

114

1

16강 질문있습니다.

0

53

1

한글이 깨질 떄 어떻게 해야 하나요?

0

83

1

자원 정리시 에러가 발생 했을 때 메모리 상황 및 실무에서 로그 확인 방법

0

96

1

인텔리제이에서 네모(스탑버튼) 누르는 것의 의미

-1

71

1

강의 섹션 8: 네드워크 -프로그램 3부분 10:45 오타?

0

90

2

제대로 이해한게 맞나 궁금합니다

0

80

1

File,Files 강의 2번쨰 Files 07:30 에 tmep 파일들을 다 지운건가요 ?

0

65

1

/.well-known/appspecific/com.chrome.devtools.json 에러에 대해서

0

639

1

Socket 자원을 정리할때 stream 을 정리하지 않는 이유가 궁금합니다.

0

95

1

클라이언트 강제종료시 오류 메세지

0

112

2

고급 2편에는 퀴즈가 없네요?

0

102

1

55. 네트워크 프로그램5 - 자원정리2 질문

0

69

1

클라이언트가 FIN과 함께 보내는 ACK는 무엇에 대한건가요?

1

111

2

BufferedInputStream이 1바이트씩 조회해도 성능이 좋은 이유

0

83

1

오타제보

0

65

2

문자 집합 호환성 여부를 판단할 때

0

55

1

utf-8, char

0

57

1