public class Sample3 {
public static void main(String[] args) {
// 문자 기반 파일 입출력
// 문자가 저장된 텍스트 파일에 대한 읽기 쓰기 작업에 적합 (이미지 X)
try { //여기선 String(문자열)으로
FileWriter fw = new FileWriter("./filewriter.txt");
fw.write("파일 쓰기 작업을 진행합니다."); //write도 문자열로 선택해서 바로 적음
fw.close();
} catch (IOException e) {
System.out.println("파일 출력 스트림 생성에 문제가 발생하였습니다.");
}
try {
FileReader fr = new FileReader("./filewriter.txt");
//파일 리더에 커서 올려서 예외처리 뭐필요한지 봐 파일낫익셉션임 생성해~!
//fr.read();//문자배열(=문자열) 버퍼(char[] cbuf) 이용하는걸로 써보겠음
char[] cArr = new char[8]; //문자배열, 반복문 써야 함
StringBuffer sb = new StringBuffer(); //몬지1도모르겠음 어펜드랑
while(true) {
int res = fr.read(cArr);//문자배열을 넘겨줌으로 인해서 8바이트씩 읽게 됨, 읽은바이트만큼 문자배열에 저장
if(res == -1) { //배열안 문자 한개당 1바이트니까
break; //int res에 읽은 바이트 저장되는데 -1은 읽은 게
} //없는 거임
sb.append(cArr, 0, res);//cArr의 0번 인덱스부터 읽은 바이트 수(res)만큼
} //스트링 버퍼에 추가하라
System.out.println(sb); //추가 다 된 스트링버퍼를 읽음
fr.close();
} catch (FileNotFoundException e) {
System.out.println("읽기 작업을 수행할 파일을 찾을 수 없습니다.");
} catch (IOException e) {
System.out.println("읽기 작업중 문제가 발생하였습니다.");
}
}
}
문자 기반 버퍼 보조 스트림 활용
public class Sample4 {
public static void main(String[] args) {
// 문자 기반 입출력 + 버퍼 보조 스트림
try {
FileWriter fw = new FileWriter("./filewriter.txt");
BufferedWriter bw = new BufferedWriter(fw);
bw.write("파일 쓰기 작업을 진행합니다.");
bw.close();
} catch (IOException e) {
System.out.println("파일 출력 스트림 생성에 문제가 발생하였습니다.");
}
try {
FileReader fr = new FileReader("./filewriter.txt");
//파일 리더에 커서 올려서 예외처리 뭐필요한지 봐 파일낫익셉션임 생성해~!
BufferedReader br = new BufferedReader(fr);
//fr.read();//문자배열(=문자열) 버퍼(char[] cbuf) 이용하는걸로 써보겠음
char[] cArr = new char[8]; //문자배열, 반복문 써야 함
StringBuffer sb = new StringBuffer(); //몬지1도모르겠음 어펜드랑
while(true) {
int res = br.read(cArr);//문자배열을 넘겨줌으로 인해서 8바이트씩 읽게 됨
if(res == -1) { //배열안 문자 한개당 1바이트니까
break; //int res에 읽은 바이트 저장되는데 -1은 읽은 게
} //없는 거임
sb.append(cArr, 0, res);//cArr의 0번 인덱스부터 읽은 바이트 수(res)만큼
} //스트링 버퍼에 추가하라
System.out.println(sb); //추가 다 된 스트링버퍼를 읽음
br.close(); // br로 쓰지만
fr.close(); // fr는 여전히 닫아주고
} catch (FileNotFoundException e) {
System.out.println("읽기 작업을 수행할 파일을 찾을 수 없습니다.");
} catch (IOException e) {
System.out.println("읽기 작업중 문제가 발생하였습니다.");
}
// 바이트 기반 입출력 스트림 + 버퍼 보조 스트림
try {
File f = new File("./fileoutput.txt");
FileOutputStream fos = new FileOutputStream(f);
BufferedOutputStream bos = new BufferedOutputStream(fos);
byte[] bArr = new byte[] {65, 66, 67, 68, 69};
bos.write(bArr);
bos.close();
fos.close();
} catch (FileNotFoundException e) {
System.out.println("파일 출력 스트림에 문제가 발생하였습니다.");
} catch (IOException e) {
System.out.println("파일 쓰기 작업에 문제가 발생하였습니다.");
}
try {
File f = new File("./fileoutput.txt");
FileInputStream fis = new FileInputStream(f);
BufferedInputStream bis = new BufferedInputStream(fis);
char[] text = new char[0];
while(true) {
int r = bis.read();
if(r == -1) {
break;
}
char[] temp = new char[text.length + 1];
System.arraycopy(text, 0, temp, 0, text.length);
temp[temp.length - 1] = (char)r;
text = temp;
}
System.out.println(text);
bis.close();
fis.close();
} catch (FileNotFoundException e) {
System.out.println("파일 입력 스트림에 문제가 발생하였습니다.");
} catch (IOException e) {
System.out.println("파일 읽기 작업에 문제가 발생하였습니다.");
}
}
}
'Java' 카테고리의 다른 글
[exam 17] 네트워크 정보 가져오기 (0) | 2021.09.11 |
---|---|
[exam16] 스레드 상속, Runnable 인터페이스 (0) | 2021.09.11 |
[210831] [exam15] 바이트 기반 파일 입출력 (0) | 2021.09.11 |
[exam15] try ~ catch문 (0) | 2021.09.11 |
[exam12] 문자열 (String) 관련 메서드 (0) | 2021.09.11 |