- 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로 받아낸 파일 경로를 똑같이 인식한다.
따라서 두가지 방법 모두 같은 파일 경로 결과를 나타낼 수 있다.
'개발 교육 TIL > back-end' 카테고리의 다른 글
[Java] Class클래스, 채팅창 프로그램(서버 기준) (0) | 2022.01.16 |
---|---|
[Java]이벤트 - 윈도우창 생성 (0) | 2022.01.14 |
[Java] Thread- 단일/다중스레드, 작성법, 우선순위 (0) | 2022.01.11 |
[Java]Box클래스, Exception, try~catch (0) | 2022.01.11 |
[Java] ListIterator, Map<key,value>, Stack, Queue (0) | 2022.01.09 |