-
FileStreamjava 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