ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • FileStream
    java 2020. 5. 9. 20:01

    참조 : 인프런 - 안드로이드를 위한 자바 - 파일스트림

    ●FileOutputStream

    -프로그램에서 파일로 데이터를 전송할 때 사용하는 스트림이다.

    -데이터를 보내고자 하는 파일이 없으면 자동으로 생성된다.

     

    주요 메서드

    -생성자(파일이름):파일이름의 파일을 열고 출력 스트림을 추출한다. 이 때 데이터를 덮어 씌워진다.

    -생성자(파일이름, boolean) : 파일이름의 파일을 열고 출력 스트림을 추출한다. 이 때 boolean 값을 true로 주면 쓰고자 하는 내용이 뒤에 추가가 된다.

    -write : 바이트 형태의 데이터를 파일로 쓴다.

    -close : 스트림을 닫는다.

    -flush : 메모리에 남겨진 데이터를 모두 송출한다.

     

    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class FileStreamTest1 {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		
    		try {
    			String fileName = "D:\\Test!!!!!\\a.txt";
    			FileOutputStream fos = new FileOutputStream(fileName);
    			
    			//쓸 데이터를 바이트별 형태로 준비
    			byte[] data = "안녕하세요".getBytes();//문자열을 바이트별로 변환
    			
    			fos.write(data);
    			fos.flush();
    			fos.close();
    			System.out.println("파일 쓰기 성공");
    			//파일이름을 인자값으로 넣은 파일 아웃풋 스트림을 만들면 된다.
    			//그러면 파일이 없으면 파일을 생성을 하고 
    			//파일이 있으면 오픈을 한다.
    			//파일로 부터 연결되어 있는 출력용 스트림을
    			//만들어서 연결이 되서 그것을 리턴해준다.
    			//byte[] data = "안녕하세요".getBytes();여기서 파일에 쓸 데이터를 준비하고
    			//fos.write(data);여기서 파일에다 쓴다.
    			
    		}catch(IOException e){
    			e.printStackTrace();
    		}
    		
    		
    	}
    
    }
    

     

     추가로 알게 된 것은 

    try(){

     }catch(IOException e){

    }

    트라이 캐치에서 트라이 중괄호{}안에 IOException에 걸리는 것이 없으면 컴파일오류가 난다. 캐치에서 IOException에 걸리는 것이 없어서 생기는 오류이다.

     

    ●FileInputStream

    -파일의 데이터를 수신할 때 사용하는 스트림이다.

    -데이터를 읽어올 파일이 없으면 예외가 발생한다.

     

    주요 메서드

    -생성자(파일이름):파일 이름의 파일을 열고 입력 스트림을 추출한다.

    -available : 한번에 데이터를 읽어올 수 있는 양을 알아온다. 한번에 읽어올 수 있는 양이 파일의 용량보다 많을 경우 파일의 용량을 가져온다.

    -close : 파일을 닫는다.

    -read : 데이터를 바이트 형태로 읽어온다.

     

    abstract int read() throws IOException

    - InputStream에서 한 바이트를 읽어서 int 값으로 반환한다. 

    int read(byte[] b) throws IOException

    - byte[] b 만큼의 데이터를 읽어서 b에 저장하고읽은 바이트 수를 반환한다


    출처: https://hyeonstorage.tistory.com/234 [개발이 하고 싶어요] 

    import java.io.FileInputStream;
    import java.io.IOException;
    
    public class FileStreamTest2 {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		try {
    			String fileName = "D:\\\\Test!!!!!\\\\a.txt";
    			FileInputStream fis = new FileInputStream(fileName);
    			byte [] buf = new byte[fis.available()];//데이터를 읽어와서 닮아 줄 바이트 배열을 만들어 준다.
    													//그런데 몇개짜리를 만들어 줘야 할지 알 수 없기 때문에
    													//.available()을 사용해서 몇개짜리배열을 만들어야 할 지 알 수 있다.
    			fis.read(buf);
    			fis.close();
    			
    			//읽어온 데이터는 바이터 형태로 되어져 있기 때문에 
    			//읽어온 데이터를 사용하고자 하는 데이터 형식으로 만들어 줘야 한다.
    			String str = new String(buf);
    			System.out.println(str);
    			
    		}catch(IOException e) {
    			e.printStackTrace();
    		}
    	}
    
    }
    

     

    'java' 카테고리의 다른 글

    2byteStream  (0) 2020.05.09
    데이터 스트림  (0) 2020.05.09
    폴더가 존재하는지 존재하지 않는지 보고 존재하지 않으면 생성  (0) 2020.05.09
    File.mkdir()과 File.mkdirs()의 차이점  (0) 2020.05.09
    다형성  (0) 2020.05.09

    댓글

Designed by Tistory.