파일 입출력
Output
Program --------------------> 외부자원
<-------------------- (file, 키보드/모니터, DBMS, ..)
Input
Stream : Data의 흐름(통로)
Buffer : 임시 저장공간(메모리)
*Stream은 문자하나하나를 byte로 가져온다. 세세함
*Buffer는 문자열로 가져온다.
Writer(입력)
- BufferedWriter : 버퍼를 사용해서 파일을 작성한다.
- FileWriter : 해당 경로에 있는 파일을 가져온다.
만약 경로에 파일이 없다면 새로 만들어 준다.
Reader(출력)
- BufferedReader : 버퍼를 사용해서 파일을 읽는다.
- FileReader : 해당 경로에 있는 파일을 가져온다.
만약 경로에 파일이 없다면 예외가 발생한다.
package day23;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class FileTest {
//throws 예외 이름
//해당 메소드에서 발생하는 특정 예외를
//발생시키지 않기 위해 사용한다.
public static void main(String[] args) throws IOException {
//1. 기존에 있는 내용에 추가하기 위해서는
// FileWriter생성자 경로뒤에 true를 작성해준다.
// default는 false(덮어쓰기)
//2. 코드 상에 작성한 문자열을 파일에 입력하기 위해서는
// Write("문자열")을 사용하고 반드시 close()를 사용해준다.
// BufferedWriter bw = new BufferedWriter(new FileWriter("text.txt", true));
/*
* JAVA는 운영 체제의 종류에 맞게 자동으로 줄바꿈 문자를 변경해준다.
* 원도우즈에서 텍스트파일의 줄바꿈은 \r\n이다.
* \n으로 작성해도 JVM이 \r\n으로 바꿔준다.
* 여기서 r은 리턴의 약자이다.
*/
// bw.write("기쁨\n");
// bw.write("슬픔\n");
// bw.write("흥분\n");
//
// bw.close();
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("text.txt"));
String data = null;
// System.out.println(br.readLine());
// System.out.println(br.readLine());
while (true) {
//파일에 있는 줄바꿈은 가지고 오지 않는다.
//줄바꿈을 할려면,
// data = br.readLine() + "\n";
data = br.readLine();
if (data == null) {
break;
}
System.out.println(data);
}
br.close();
} catch (FileNotFoundException e) {
System.out.println("잘못된 파일입니다.");
} finally {
// br.close();
}
}
}
package day23;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
public class FileTest2 {
public static void main(String[] args) throws IOException {
String fileName = "animals.txt";
String name = null;
String line = null;
String temp = "";
boolean check = false;
// 동물 이름
// BufferedWriter bw = new BufferedWriter(new FileWriter("animals.txt", true));
Scanner sc = new Scanner(System.in);
// 추가
// System.out.println("추가하실 동물 이름:");
// bw.write(sc.next() + "\n");
// bw.close();
// 수정
// BufferedReader br = new BufferedReader(new FileReader(fileName));
// System.out.println("수정하실 동물 이름 : ");
// name = sc.next();
//
// while (true) {
// line = br.readLine();
// if (line == null) { break;}
//
// if (line.equals(name)) {
// System.out.println("새로운 동물 이름: ");
// name = sc.next();
// temp = name + "/n";
// check = true;
// continue;
// }
// temp += line+ "\n";
// }
// br.close();
//
// if (check) {
// BufferedWriter bw = new BufferedWriter(new FileWriter(fileName));
// bw.write(temp);
// bw.close();
// System.out.println("수정 성공");
// }else {
// System.out.println("수정 실패");
// }
// 삭제
// BufferedReader br = new BufferedReader(new FileReader(fileName));
// System.out.println("삭제하실 동물 이름 : ");
// name = sc.next();
//
// while (true) {
// line = br.readLine();
// if (line == null) { break;}
//
// if (line.equals(name)) {
// check = true;
// continue;
// }
// temp += line+ "\n";
// }
// br.close();
//
// if (check) {
// BufferedWriter bw = new BufferedWriter(new FileWriter(fileName));
// bw.write(temp);
// bw.close();
// System.out.println("삭제 성공");
// }else {
// System.out.println("삭제 실패");
// }
// 검색
// BufferedReader br = new BufferedReader(new FileReader(fileName));
// ArrayList<String> resultList = new ArrayList<>();
//
// System.out.println("검색하실 동물 이름 : ");
// name = sc.next();
// line = null;
// while (true) {
// line = br.readLine();
//
// if (line == null) {
// break;
// }
//
// if (line.contains(name)) {
// resultList.add(line);
// }
// }
// if (resultList.size() == 0) {
// System.out.println("검색 결과 없음");
// } else {
// System.out.println("[검색 결과]");
// for (String data : resultList) {
// System.out.println(data);
// }
// }
// 목록
//오류있음
// BufferedReader br = new BufferedReader(new FileReader(fileName));
// line = br.readLine();
//
// while (true) {
// if (line == null) {break;}
// System.out.println(line);
// }
// br.close();
}
}
package day23;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class FileTest3 {
public static void main(String[] args) throws IOException{
String fileName = "names.txt";
// BufferedWriter bw = new BufferedWriter(new FileWriter(fileName));
// bw.close();
// String contents = new String(Files.readAllBytes(Paths.get(fileName)), "UTF-8");
String contents = new String(Files.readAllBytes(Paths.get(fileName)), "EUC-KR");
// System.out.println(contents);
for (String data : contents.split("\r\n")) {
System.out.println(data + "님");
}
}
}
'JAVA' 카테고리의 다른 글
[WEB]DAY24, 25_ 파일 입출력과 MVC모델(상품 정보 관리 프로그램) (0) | 2020.04.15 |
---|---|
[WEB]DAY22_쓰레드(Thread), 교착상태(DeadLock), 동기화(Synchronuzed) (0) | 2020.04.12 |
[WEB]DAY21_MVC(소프트웨어 디자인 설계 패턴) (0) | 2020.04.09 |
[WEB]DAY20_Set(HashSet), Map(HashMap) (0) | 2020.04.09 |
[WEB]DAY19_Wrapper 클래스, 빠른 for문, 제네릭(Generic), 컬렉션 프레임워크(Collection Framework) (0) | 2020.04.07 |