티스토리 뷰
파일 입출력
- 자바 콘솔 출력과 파일을 연동하여 파일 읽고 쓰기라고 생각하면 됨.
예제를 통해 익히기
1. 파일 쓰기
// 파일 입출력
public class FileWriterTest {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
String str = "자바는 정말 쉬워요! \n" + "오늘 숙제는 2개입니다. \n" + "주말 숙제는 4개입니다.";
char[] change = new char[str.length()]; // 문자열을 문자열 길이의 배열으로 만들고
str.getChars(0, str.length(), change, 0);
//처음부터 str의 길이만큼을 change 배열에 0(첫위치)부터 삽입한다.
// 그럼 str의 내용이 전부 change 배열 안으로 들어가게 된다.
System.out.print("파일 이름을 정하세요 : ");
String fileName = sc.next();
FileWriter fw = new FileWriter(fileName); // 지금 fileName이라는 파일에다가 글을 쓰겠다는 말.
// 외부로 나가는 것이므로 오류 발생. 일단 throw IoException 처리 해준다.
// try-catch의 방법도 있음.
fw.write(change); // 쓰는 작업
fw.close(); // 닫는 작업. 반드시 해줘야함.
System.out.println(fileName + " 파일이 생성됨");
}
}
2. 파일 읽기
public class FileReaderTest {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
System.out.print("읽고싶은 파일 입력 : ");
String fileName = sc.next();
String root = "C:\\Users\\eui44\\OneDrive\\바탕 화면\\메가It\\Mega_plus\\backend_onemore\\" + fileName;
FileReader fr = new FileReader(root);
int i;
while ((i = fr.read()) != -1) { // 얘가 int로 읽어요. -1이면 데이터가 없는 것(디폴트)
System.out.print((char) i);
}
fr.close();
}
}
3. 파일 쓰기(덮어쓰기와 이어쓰기)
public class FileTestWrite {
// 덮어쓰기(새로 쓰기)와 이어쓰기가 있다.
public static void main(String[] args) throws IOException {
FileWriter fw1 = new FileWriter("study.txt", false); // 덮어쓰기
// FileWriter fw2 = new FileWriter("study.txt", true); // 이어쓰기
// fw2.write("자바 정말 쉬워요! 진짜로요. 제발 좀 믿으세요!");
// fw2.close();
// // 얘는 출력하는 게 없어서 아무것도 안나오지만, 파일경로 타고 들어가서 열어보면 추가되어 있음을 확인 가능
fw1.write("실험을 위해 덮어쓰기를 해볼거예요. 자바 정말 쉬워요!!!");
fw1.close();
}
}
4. 파일 읽기(문장으로)
public class FileTestRead {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("study.txt");
BufferedReader reader = new BufferedReader(fr);
String line;
while ((line = reader.readLine()) != null) { // 읽으려고 한 줄 뺐는데 null이 아니면!(내용 유)
System.out.println(line);
// 얘가 더 편한 건, 한 줄 문자열로 넘어온다는것. 저번처럼 귀찮은 형변환이 필요가 없어요.
}
}
}
728x90
반응형
'[개발] - Java > Mega' 카테고리의 다른 글
Day28-3. 자료구조(6) Map (0) | 2023.04.24 |
---|---|
Day28-2. 자료구조(5) Set (0) | 2023.04.24 |
Day27-4. 자료구조와 컬렉션 (2) Stack (0) | 2023.04.23 |
Day27-3. 자료구조와 컬렉션 (1) List (0) | 2023.04.23 |
Day27-2. 자료구조 도입 (0) | 2023.04.23 |
Comments