파일 대상 입출력

2022. 12. 10. 14:29카테고리 없음

File fiel = new File("data");
자바에서 제공되는 파일 클래스를 이용해서 데이터라는 이름의 파일을 객체로 생성한다.
하드디스크에 실제 존재하든 안하든 자바 메모리상에 만들어지는 객체이다 ( 경로를 가지고 있는 객체이다).

 

1) Stream =흐름 (파일을 출력하기 위한 흐름)

 FileOutputStream pos =null;

2)이클래스를 이용해서 객체를 생성할때 어떤 파일로 출력할 것인가? 나타낸다.

절대 경로 , 상대경로 사용 할수 있다.

pos = new FileOutputStream(file); //파일=목적지= 빨대를 꼽는다.

 

3) 입출력 클래스 종류

Stream :1byte 자료형 기반, 한글은 안된다  
Reader, Writer:  Char 형이 디폴트 이다. 2byte 단위로 된다.  채팅 , 문자단위로 바로바로 해석시 사용

pos.write();

4)우리가 파일을 삭제하거나 , 이동 시킬시 현재 파일이 열려있어서 안된다라는 경고가 뜬 경우가 있다. 

이것 처럼 빨대를 꽂았다, 이상태에서 프로그램 종료시 os는 누가 사용하고 있다고 생각하고 사용중으로 남는다.

close();

Output 전체 코드 

package main123;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class Exam01 {
	public static void main(String[] args) {
		File file = new File("data");//자바에서 제공되는 파일 클래스 이용해서 데이터 파일 만든다.
		FileOutputStream fos = null;
		
		try {
			fos = new FileOutputStream(file,true);
			fos.write(65);
			
			
		}catch(IOException e){
			e.printStackTrace();
			
			
			
		}finally {
			
			if(fos != null) {
			try {
				
				fos.close();
			}catch(IOException e) {}
			}
		}
		
		
	}

}

 

5)InputStream도 똑같다.

ex)아스키코드 : 컴퓨터는 0,1밖에 모르기에 문자를 인식시키기 위한 역속으로 아스키 코드(1byte)가 있고 자방에서는 아스키 코드가 지원하지 않는 한글등 전세계 글자를 표현하기 위해서 유니코드(2byte)를 지원한다.

 

ex) Stream ->1byte기반 한글사용할시 문자가 깨진다, "가"를 작성시 2byte중 1byte값만 가져온다.

package main123;

import java.io.File;
import java.io.FileInputStream;

import java.io.IOException;

public class Exam2 {
	public static void main(String[] args) {
		File file = new File("data");//자바에서 제공되는 파일 클래스 이용해서 데이터 파일 만든다.
	
		/*
		 * System.out.println(file.length());//file클래스가 하는일 ( 파일 정보 관리)
		 * System.out.println(file.canExecute());//실행 가능
		 * System.out.println(file.canRead());//읽을 수있는
		 * System.out.println(file.getAbsolutePath());//절대 경로
		 */
		
		FileInputStream fis = null;
		
		try {
			fis = new FileInputStream(file);
			int data =0;
			
			while((data=fis.read()) != -1) {//데이터의 1byte를 읽어 들인다.
            //읽어들인 데이터가 -1이 아니면 버블이 잘 들어왔다면 
				System.out.print((char) data);//-1:EOF( 파일의ㅡ 끝을 나타내는 값)
				
			}
			
			  System.out.println(data); 
			  data = fis.read(); System.out.println(data);
			  
			  data = fis.read(); System.out.println(data);
			  
			  data = fis.read(); System.out.println(data);
			  
			  data = fis.read(); System.out.println(data);
			 
		}catch(IOException e){
			e.printStackTrace();
			
			
			
		}finally {
			
			if(fis != null) {
			try {
				
				fis.close();
			}catch(IOException e) {}
			}
		}
		
		
	}

}

 

"data "파일

package main123;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class Exam01 {
	public static void main(String[] args) {
		File file = new File("data");//??¹?¿¡¼­ ??°ø??´? Æ??? ??·¡½º ??¿??ؼ­ ?????? Æ??? ¸¸??´?.
		FileOutputStream fos = null;
		
		try {
			fos = new FileOutputStream(file,true);
			fos.write(65);
			
			
		}catch(IOException e){
			e.printStackTrace();
			
			
			
		}finally {
			
			if(fos != null) {
			try {
				
				fos.close();
			}catch(IOException e) {}
			}
		}
		
		
	}

}