본문 바로가기

Today I Learned

File Class - write/read

파일을 사용하고 싶을때는 File 클래스를 사용한다.

File객체를 생성하고 ("파일의 경로") 를 적어준다.

위와 같이 이클립스 내에서 파일을 생성하는 경우

File file = new File("secret_message.txt");

위와 같이 경로를 설정하여 파일을 사용할 수 있다.

혹은 바탕화면에 파일을 생성한 경우에는 파일의 속성 -> 위치를 확인하여 경로를 적어줄 수 있다.

위의 경로를 복사하여 파일에 적어주면 이클립스 내에 파일이 없어도 실행 가능하다.

 

파일 클래스가 가지고 있는 메소드는 아래와 같다.

	public static void main(String[] args) {
		File file = new File("secret_message.txt");
		if(file.exists()) {
			System.out.println("That file exists!");
			System.out.println(file.getPath()); 
			System.out.println(file.getAbsolutePath()); //경로
			System.out.println(file.isFile()); //파일이 있는지 확인
			file.delete(); //파일을 삭제한다
		} else {
			System.out.println("doesnt't exist!");
		}

 

파일에 쓰는 방법은 다음과 같다.

이클립스에 텍스트 파일 "poem2.txt" 을 생성하고 FileWriter로 파일의 경로를 적어준다.

write()함수를 사용하여 쓰고 싶은 글을 쓴다.

	public static void main(String[] args) {
		try {
			FileWriter writer = new FileWriter("poem2.txt");
			writer.write("Roses are red");
			writer.close();
		} 
		catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

그러면 해당하는 파일에서 다음과 같이 확인 가능하다.

 

	public static void main(String[] args) {
		try {
			FileWriter writer = new FileWriter("poem2.txt");
			writer.write("Roses are red\nViolets are blue\nBooty booty Booty booty Booty booty\n"); //줄바꿈
			writer.append("\n(A poem by Bro)"); //추가하기
			
			writer.close();
		} 
		catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

파일을 읽는 방법은 다음과 같다.

바탕화면에 파일 "art.txt"를 생성하고 원하는 문구를 작성한다. 

https://www.asciiart.eu/computers

나는 해당 사이트의 "computers"문구를 복사하여 사용했다

	public static void main(String[] args) {
		try {
			FileReader reader = new FileReader("C:/Users/chzhz/OneDrive/바탕 화면/art.txt");
			int data = reader.read();
			while(data!=-1) {
				System.out.print((char)data);
				data=reader.read();
			} 
			reader.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

위와 같이 경로를 설정해주고 read()함수로 파일을 읽어온다.

read() 함수는 char형으로 파일의 내용을 받으며 int 값을 반환하는데, -1을 리턴한다면 파일이 없다는 의미이다. 

그래서 != -1일때 파일 안의 문자를 읽어오도록 했다. char형이기 때문에 (char)로 타입 캐스팅을 해준다.

실행하면 아래와 같이 콘솔창에서 결과를 확인할 수 있다.

*File 관련 클래스들은 사용하고 나면 꼭 close를 해줘야 한다.