텍스트 파일 읽기 (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) { } } }
예제 – 간단한 로그 기록
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class LogSaveTest { | |
public static void main(String[] args) { | |
System.out.println(LogSave.getFilePath()); | |
LogSave.setFilePath("log2.txt"); | |
LogSave.write("초기화를 실시합니다."); | |
} | |
} |
시스템 콘솔에 출력함과 동시에 텍스트 파일에도 해당 내용을 기록하는 예제입니다.
0개의 댓글