실습(파일 입출력)
1. "task.txt" 파일의 마지막 줄에 '안녕하세요' 출력하기
(1) 파일 마지막 줄에 문자열을 출력하는 메소드 생성
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public static void append(String msg) throws IOException {
File f = new File("task.txt");
FileWriter fw = new FileWriter(f, true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(msg + "\n");
bw.close();
fw.close();
}
(2) main 메소드에서 해당 메소드 실행
public static void main(String[] args) throws IOException {
try {
FileTask.append("안녕하세요");
} catch (IOException e) {
e.printStackTrace();
}
}
2. "task.txt" 파일의 1번째 위치에 '안녕하세요' 추가 출력하기
(1) 파일 중간에 문자열을 삽입하는 메소드 생성
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public static void insert(int idx, String msg) throws IOException {
File f = new File("task.txt");
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
String res = "";
for(int i = 0; i < 5; i++) {
res += br.readLine() + "\n";
}
res += msg + "\n";
String line = "";
while((line = br.readLine()) != null) {
res += line + "\n";
}
br.close();
fr.close();
FileWriter fw = new FileWriter(f);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(res);
bw.close();
fw.close();
}
(2) main 메소드에서 해당 메소드 실행
public static void main(String[] args) throws IOException {
FileTask.insert(1, "안녕하세요");
}
3. "task.txt" 파일의 9번째 줄 삭제하기
(1) 입력한 위치의 문자열을 삭제하는 메소드 생성
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public static void remove(int idx) throws IOException {
File f = new File("task.txt");
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
String res = "";
for(int i = 0; i < idx; i++) {
res += br.readLine() + "\n";
}
br.readLine();
String line = "";
while((line = br.readLine()) != null) {
res += line + "\n";
}
br.close();
fr.close();
FileWriter fw = new FileWriter(f);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(res);
bw.close();
fw.close();
}
(2) main 메소드에서 해당 메소드 실행
public static void main(String[] args) throws IOException {
FileTask.remove(9);
}
※ 전체 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class FileTask {
public static void append(String msg) throws IOException {
File f = new File("task.txt");
FileWriter fw = new FileWriter(f, true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(msg + "\n");
bw.close();
fw.close();
}
public static void insert(int idx, String msg) throws IOException {
File f = new File("task.txt");
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
String res = "";
for(int i = 0; i < 5; i++) {
res += br.readLine() + "\n";
}
res += msg + "\n";
String line = "";
while((line = br.readLine()) != null) {
res += line + "\n";
}
br.close();
fr.close();
FileWriter fw = new FileWriter(f);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(res);
bw.close();
fw.close();
}
public static void remove(int idx) throws IOException {
File f = new File("task.txt");
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
String res = "";
for(int i = 0; i < idx; i++) {
res += br.readLine() + "\n";
}
br.readLine();
String line = "";
while((line = br.readLine()) != null) {
res += line + "\n";
}
br.close();
fr.close();
FileWriter fw = new FileWriter(f);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(res);
bw.close();
fw.close();
}
public static void main(String[] args) throws IOException {
try {
FileTask.append("안녕하세요");
} catch (IOException e) {
e.printStackTrace();
}
FileTask.insert(1, "안녕하세요");
FileTask.remove(9);
}
}
