
I/O 라는 것은 인풋 아웃풋 입니다 입 출력이라고 흔히 말하죠
간단히 생각하면 간단 하지만 파고들수록 어렵고 아 이게 뭐지 싶습니다 후
저도 처음 접했을때 이게 뭔가 싶었어요 그냥 파일을 만드네 음 그런가보다
하며 넘어갔던 내용인데 자바를 통해서 웹을 개발 한다고 하면 모르면 안될 내용이라 작성합니다
일단 의미부터 알아보죠
자바에선 파일과 콘솔의 입출력을 직접 다루진 않습니다 바로 스트림을 통해서 다루는 것이죠
이 스트림이라는 것은 실제로 사용자가 입력하거나 출력이 표현되는 흐름 이라고 알고 계시면 됩니다
이번 시간에는 파일의 입출력을 알아볼것인데 처음 다루는 내용인 만큼 간단한 내용으로 알아보도록 합시다
I/O에 관련된 클래스들은 검색 해보시면 아주 상세히 나옵니다 ㅎㅎ
구조는 그렇게 파악 하시고 일단 우리는 txt확장자를 가진 메모장 파일 data.txt를 만들어봅시다
(경로는 되도록 한글이 들어가지 않도록 해주세요 ㅎㅎ)
C:\git\programersStudy\studyProject\src\studyProject
저는 여기에다가 만들었습니다 git연동 해놔서 경로가 이렇습니다
이 경로에 data.txt를 만들었으면 코드로 넘어가봅시다
import java.io.FileInputStream;
import java.io.FileOutputStream;
import 해줘야 하는 클래스는 두개입니다
FileInputStream finput = null;
FileOutputStream foutput = null;
필요한 클래스를 변수로 지정해주고 null로 초기화 합니다
일단은 비어있는 상태죠
여기에 파일 경로를 넣어주고 인스턴스 생성합니다
finput = new FileInputStream("C:/git/programersStudy/studyProject/src/studyProject/data.txt");
foutput = new FileOutputStream("C:/git/programersStudy/studyProject/src/studyProject/copydata.txt");
위에 보여드렸던 경로를 지정하고 카피해서 생성될 파일의 경로와 파일네임까지 저장해놨습니다 ㅎㅎ
우리가 해볼것은 data.txt 내용을 byte 로 읽어서 copydata.txt 에 써보는거에요
그다음은 읽어봅시다
int readData = -1; // 바이트형식으로 읽어냄
while((readData = finput.read()) != -1){ // -1 이란 읽을 데이터가 더 없을때 까지라고 생각하면 된다
foutput.write(readData); // write 함수로 데이터를 읽어서 output에 쓴다
}
바이트 형식으로 읽어내기 때문에 -1이 되면 더이상 읽을 데이터가 없다고 생각하면 됩니다 ㅎㅎ
자 그럼 잘 복사 됐는지 확인 해봅시다

목록에 copydata.txt 가 있는지 확인해봅시다 ㅎㅎ 일단은 없죠 ??

코드를 실행해보고 데이터를 확인해 봅시다

다행히 잘 복사가 되었네요 파일 자체를 복사 한게 아니라 데이터를 읽어서 새로운 파일에 쓴 겁니다 ㅎㅎ
전체 코드를 남겨놓겠습니다 한번 확인 해보시면 좋을것 같고 다음시간엔 좀 더 딥 하게
알아보도록 합시다 이건 걸음마도 아닌 수준이라 더 확실하게 아는 수준까지 같이 끌어올려 봅시다!
public static void main(String[] args) {
FileInputStream finput = null;
FileOutputStream foutput = null;
try{
finput = new FileInputStream("C:/git/programersStudy/studyProject/src/studyProject/data.txt");
foutput = new FileOutputStream("C:/git/programersStudy/studyProject/src/studyProject/copydata.txt");
//input 경로와 output 경로를 지정한 후 data.txt 데이터를 복사하여 output으로 이동시켜봅시다
int readData = -1; // 바이트형식으로 읽어냄
while((readData = finput.read()) != -1){ // -1 이란 읽을 데이터가 더 없을때 까지라고 생각하면 된다
foutput.write(readData); // write 함수로 데이터를 읽어서 output에 쓴다
}
}
catch(Exception e){
e.printStackTrace();
}
finally{
try{
//스트림을 열었으면 반드시 반드시!!! 닫아야 합니다 이거 굉장히 중요합니다
finput.close();
foutput.close();
}
catch(Exception e){
System.out.println(e);
}
}
}
'Developer > Java' 카테고리의 다른 글
[java]스레드(Thread) (0) | 2022.11.29 |
---|---|
[java]I/O_2 (0) | 2022.10.13 |
[java]Stream (1) | 2022.10.04 |
[java]자바 중급 개념정리 (2) | 2022.09.30 |
[java]자바 중급 개념정리1 (0) | 2022.09.29 |