package com.tjoeun.textfileIO;

import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;
public class TextFileWriteTest {
public static void main(String[] args) {
Scanner scanner = null; // 키보드 입력에 사용할 스캐너
PrintWriter printWriter = null; // 텍스트 파일로 출력에 사용할 PrintWriter // 네트워크로 날릴 수 있다.
// 경로 지정방식은 절대경로 지정방식(최상위 디렉토리 C디스크에서 타고 들어가는 것)과 상대경로 지정방식(현재 폴더를 기준)이 있다.
// 절대경로: 작업중인 파일이 위치한 디스크 드라이브의 최상위(root) 폴더(디렉토리)부터
// 작업중인 파일이 위치한 폴더까지의 경로를 말한다.
// "."은 현재 작업하는 파일이 위치한 경로를 의미하고 ".."은 현재 파일이 위치한 경로의 한단계 상위 경로를 의미한다.
// 상대경로 : 작업중인 파일이 위치한 프로젝트 이름의 폴더(".")부터 작업중인 파일이 위치한 폴더까지의 경로를 말한다.
// python이나 c/c++dml "."은 화면에 열려있는 파일이 위치한 폴더를 의미하지만 java의 "."은 프로젝트 이름의 폴더를 의미하는 것에 주의한다.
// 경로 지정 시 경로와 경로, 경로와 파일을 구분하는 구분자는 "\"가 기본이지만 에러가 발생되면 "\\"나 "/"로 수정한다. "\\"와 "/" 섞어 사용해도 된다.
// 이스케이프 시퀀스 : \ + (n, r, t, b, a, ', ", \) 때문이다
// System.out.println("제 2외국어를 배운 호랑이가 \"야옹\" 합니다."); // 제 2외국어를 배운 호랑이가 "야옹" 합니다.
// C:\Users\tj\Desktop\khd\java\workspace\k20231214\src\com\tjoeun\textfileIO
// 절대경로 2가지 : 잘 안쓰임. 작업환경이 바뀌면 실행 불가.
// String filepath = "C:\\Users\\tj\\Desktop\\khd\\java\\workspace\\k20231214\\src\\com\\tjoeun\\textfileIO\\out.txt";
// String filepath = "C:/Users/tj/Desktop/khd/java/workspace/k20231214/src/com/tjoeun/textfileIO/out.txt";
// 상대경로 2가지 : 주로 많이 씀.
// String filepath = ".\\src\\com\\tjoeun\\textfileIO\\out.txt";
String filepath = "./src/com/tjoeun/textfileIO/out.txt";
try {
// PrintWriter 클래스의 생성자에 출력 파일의 경로와 이름을 지정해서 출력 파일을 만든다.
printWriter = new PrintWriter(filepath);
scanner = new Scanner(System.in);
// "QUIT"가 입력될 때까지 반복하며 키보드로 입력한 데이터를 텍스트 파일에 저장한다.
while (true) {
// 텍스트 파일에 저장할 데이터를 키보드로 입력받는다.
System.out.print(">>> ");
String str = scanner.nextLine().trim();
// "QUIT"가 입력되면 무한 루프를 탈출한다
if (str.toUpperCase().equals("QUIT")) { //입력받은 문자열(str)을 대문자로 바꾼 것이 "QUIT"랑 일치하는가?
break;
}
// 입력 받은 데이터를 텍스트 파일에 저장한다.
// write() 메소드로 PrintWriter 클래스 객체로 생성한 텍스트 파일에 출력한다.
// 자바 구버전에서는 "\n"만으로 처리하면 텍스트 파일에 줄바뀜이 안될 때가 있어서 "\r\n"로 코딩하는 것을 권장.
// => 순서를 바꾸면 안된다.
// \n : new line, 줄을 바꾼다
// \r : carriage return, 커서를 그 줄의 앞으로 보낸다.
if (str.length() !=0 ) {
printWriter.write(str + "\r\n");
}
}
System.out.println("텍스트 파일로 저장 완료!!!");
} catch (FileNotFoundException e) {
e.printStackTrace();
System.out.println("파일의 경로가 잘못되었거나 파일이 존재하지 않습니다.");
} finally {
// 파일로 출력할 때는 출력 작업이 완료되면 반드시 close() 메소드로 파일을 닫아야 정상적으로
// 데이터가 파일에 저장된다.
if (printWriter != null) {
printWriter.close();
}
}
}
}

'java&eclipse 코딩 알고리즘 > 20231214' 카테고리의 다른 글
| MemoList (0) | 2023.12.14 |
|---|---|
| MemoVO (0) | 2023.12.14 |
| StringTokenizerTest (0) | 2023.12.14 |
| TextFileReadTest2 (0) | 2023.12.14 |
| TextFileReadTest (0) | 2023.12.14 |