728x90
public static void aaaaa(){
String path = "C:/Users/log.txt";
File Folder = new File(path);
if(!Folder.exists()){
try{
Folder.mkdir();
System.out.println("폴더가 생성되었습니다.");
}
catch(Exception e){
e.getStackTrace();
}
}else {
System.out.println("이미 폴더가 생성 되어 있습니다.");
}
try{
OutputStream output = new FileOutputStream("C:/log.txt");
String str = "오늘 날씨는 아주 좋습니다.";
byte[] by = str.getBytes();
output.write(by);
}
catch(Exception e){
e.getStackTrace();
}
}
밑에는 역시 펌해온 더 좋은 FileReader 예제다.
csv 및 text 모두 지원 하는 것 같다.
텍스트 파일 읽기 (BufferedReader 사용)
텍스트 파일을 읽는 순서는 다음과 같습니다.
- File 인스턴스를 생성
- File 인스턴스를 파라미터로 하는 FileReader 인스턴스 생성
- FileReader 인스턴스를 파라미터로 하는 BufferedReader 생성
- BufferedReader에서 읽은 텍스트를 임시로 저장하는 String 타입의 변수 생성
- while문과 버퍼리더의 readLine() 을 이용해 텍스트 파일을 한 줄씩 읽음
- BufferedReader를 close() 시킴
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
public class ReadEx {
public static void main(String[] args) {
File file = new File("example.txt");
try{
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String line = "";
while((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
} catch(Exception e){
}
}
}
위 코드를 try with resources(자바 7 이상 지원)으로 바꾸면 다음과 같습니다.
try(FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);){
String line = "";
while((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
텍스트 파일 쓰기 (BufferedWriter 사용)
텍스트 파일을 쓰는 순서는 다음과 같습니다.
- FileWriter 인스턴스 생성
- FileWriter 인스턴스를 파라미터로 하는 BufferedWriter 생성
- BufferedWriter의 write(), nextLine()등을 이용해 파일 기록
- BufferedWriter의 flush()를 이용해 버퍼를 비우고 파일 기록
- BufferedWriter를 close() 시킴
import java.io.BufferedWriter;
import java.io.FileWriter;
public class WriteEx {
public static void main(String[] args) throws Exception {
FileWriter fw = new FileWriter("writeEx.txt", false);
// 위에서 false는 isAppend 옵션으로, true를 하면 파일 뒤에 이어서 기록하며,
// false의 경우 파일을 초기화한다음 처음부터 기록
BufferedWriter bw = new BufferedWriter(fw);
bw.write("김밥 1줄");
bw.newLine();
bw.write("김밥 2줄");
bw.flush();
bw.close();
}
}
위 코드를 try with resources(자바 7 이상 지원)으로 바꾸면 다음과 같습니다.
import java.io.BufferedWriter;
import java.io.FileWriter;
public class WriterEx2 {
public static void main(String[] args) {
try(BufferedWriter bw = new BufferedWriter(new FileWriter("writeEx2.txt", false))) {
for(int i = 1; i <= 10; i++) {
bw.write(String.format("김밥 %d줄", i));
bw.newLine();
}
bw.flush();
} catch(Exception e) {
}
}
}
예제 – 간단한 로그 기록
import java.io.BufferedWriter; | |
import java.io.FileWriter; | |
import java.text.SimpleDateFormat; | |
import java.util.Calendar; | |
import java.util.Locale; | |
public class LogSave{ | |
private static String filePath = "log.txt"; | |
public static void write(Object o) { | |
Calendar cal = Calendar.getInstance(); | |
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd kk:mm:ss", Locale.getDefault()); | |
String date = sdf.format(cal.getTime()); | |
String out = "[" + date + "] " + o; | |
System.out.println(out); | |
try(BufferedWriter bw = new BufferedWriter(new FileWriter(filePath, true))){ | |
bw.append(out); | |
bw.newLine(); | |
} catch(Exception e) { | |
e.printStackTrace(); | |
} | |
} | |
public static String getFilePath() { | |
return filePath; | |
} | |
public static void setFilePath(String filePath) { | |
LogSave.filePath = filePath; | |
} | |
} |
public class LogSaveTest { | |
public static void main(String[] args) { | |
System.out.println(LogSave.getFilePath()); | |
LogSave.setFilePath("log2.txt"); | |
LogSave.write("초기화를 실시합니다."); | |
} | |
} |
시스템 콘솔에 출력함과 동시에 텍스트 파일에도 해당 내용을 기록하는 예제입니다.
728x90
'소프트웨어 (과거) > 자바 GUI & C# 등...' 카테고리의 다른 글
12. arrayList 사용법 (0) | 2022.02.15 |
---|---|
11. 알면 편한 함수 (0) | 2022.02.07 |
9. 자바 쓰레드 상속 예제... 자동차 경주 (0) | 2022.02.03 |
8. 자바 gui 정리 - 다른 버전 (0) | 2022.01.29 |
7. 자바 쓰레드 정리 (0) | 2022.01.29 |