아무튼 개발
article thumbnail
반응형
  • Stream

스트림은 데이터를 입출력할 때 형태와 관계없이 모든 데이터를 일련된 흐름으로 전송하는 것이다. 

 

  •  

기본스트림은 in, out

 

InputStreamReader는 1byte 스트림은 2byte로 변환해주는 브릿지 스트림이다.

 System.in은 키보드로 입력한 1바이트의 문자를 담아온다.

OutputStreamWriter는 1바이트의 문자를 내보낸다.

 

  •  

FileInputStream 파일 읽어오기

FileOutputStream 파일 내보내기

 

  • 파일 복사

위의 코딩은 메인절에서 작성한다.

원본파일과 대상파일 주소를 입력하는 or과 ds는 파일경로를 입력하면 된다.

 

원본파일을 내보내고 대상파일에서 받아낼 수 있는 스트림을 선언해주고

 

while문 내에서 원본파일의 데이터가 없을 때 까지 대상파일이 받아낸다. write메소드와 flush메소드를 사용한다.

스트림이 끝났을 경우 close메소드를 통해 닫아준다.

 

  • PrintStream

프린트스트림을 사용하여 누적시킬 수 있다.

FileOutputStream 괄호에는 파일경로를 입력한다.

 

ps.println("a");
ps.println("b");

fos = new FileOutputStream(@파일경로@,true);
ps = new PrintStream(fos);

ps.println("c");
ps.println("d");

ps.close();
fos.close();
} catch (Exception e) { // TODO: handle exception }

파일경로와 함께 true를 줘야 c와 d가 a,b에 이어 누적이 된다.

true를 생략하면 단순 변경으로 된다.

물론 이것은 PrintStream에서만 가능하다.

 

  • 파일 경로 입력 방법

메인절에서

<1번째 방법>
String str = "d:\\a\b\c\d.txt";

String path = str.substring(0, str.lastIndexOf("\\"));

File f = new File(path);
if(!f.exists()) {
f.mkdirs();

파일경로는 str로 선언한다. (단순히 abcd로 입력함)

lastIndexOf는 마지막 txt파일명 앞까지의 경로를 받아낼 수 있기 때문에 사용한다.

 

if절에서 파일이 존재하지않으면 mkdirs메소드를 통해 경로에 따라 파일을 만들게 되는 것이다.

 

<2번째 방법>
File f = new File(str);
if(!f.getParentFile().exists()) {
f.getParentFile().mkdirs();
}

getParentFile은 위에서 lastIndexOf로 받아낸 파일 경로를 똑같이 인식한다.

따라서 두가지 방법 모두 같은 파일 경로 결과를 나타낼 수 있다.

반응형
profile

아무튼 개발

@릴쥬

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...