본문 바로가기

JAVA

[WEB]DAY23_파일 입출력

파일 입출력


                    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 + "님");
		}
	}
}