이미지나 파일을 바이트 배열로 변경하고 그 바이트 배열을 다시 파일로 저장하는 방법을 정리
사용할 클래스
FileInputStream: 파일 내용을 바이트 형식을 읽음
FileOutputStream: 파일에 바이트 스트림으로 저장하기 위한 클래스
BufferedInputStream: 바이트 기반의 성능 향상 입력 스트림, 직접적으로 파일을 쓸 수 없음 FIleInputStream 을 사용
BufferedOutputStream: 바이트 기반의 성능 향상 출력 스트림, 데이터를 쌓아두었다가 데이터가 다 차면 파일을 씀
1. FileInputStream으로 복사할 파일 내용을 byte 형식으로 읽어온다
- C:\\Users\\Public\\Downloads에 있는 Test.txt파일을 복사할 것이다
- Test.txt 파일에 적힌 내용은 "Test File"
FileInputStream fis = new FileInputStream("C:\\Users\\Public\\Downloads\\Test.txt"); // 원본 파일 명
BufferedInputStream bis = new BufferedInputStream(fis);
- 입력스트림으로 저장
2. 이제FileOutputStream으로 파일을 쓸 경로를 지정한다
FileOutputStream fos = new FileOutputStream("C:\\Users\\\\Public\\Downloads\\Copy.txt"); // 복사할 파일 명
BufferedOutputStream bos = new BufferedOutputStream(fos);
3. BufferInputStream으로 읽어온 data가 없을 때까지 BufferOutputStream에 쓴다
byte[] data = new byte[1204]; //1byte
int i = 0;
StringBuffer buffer = new StringBuffer();
while((i= bis.read(data,0,1024))!=-1){
bos.write(data);
}
4. 전체 코드
public static void main(String[] args) throws IOException{
FileInputStream fis = new FileInputStream("C:\\Users\\Public\\Downloads\\Test.txt"); // 원본 파일 명
FileOutputStream fos = new FileOutputStream("C:\\Users\\\\Public\\Downloads\\Copy.txt"); // 복사할 파일 명
BufferedInputStream bis = new BufferedInputStream(fis);
BufferedOutputStream bos = new BufferedOutputStream(fos);
byte[] data = new byte[1204]; //1byte
int i = 0;
StringBuffer buffer = new StringBuffer();
while((i= bis.read(data,0,1024))!=-1){
bos.write(data);
}
bis.close();
bos.close();
}
5. 결과(Copy.txt이 저장됨)
Byte 배열의 바이너리 데이터를 가지고 있는 경우
- FileOutStream의 write 함수를 사용하여 data를 저장하면 된다
public static void SaveFile(String filename,byte[] data){
try {
int bytesRead;
File filePath = new File(경로,filename); // 복사하고 싶은 경로, 저장하고싶은 파일명
FileOutputStream fos = new FileOutputStream(filePath);
fos.write(data); //바이너리 데이터 data를 파일에 쓴다
fos.flush();
fos.close();
}catch (Exception e) {
// TODO: handle exception
}
}
반응형
'JAVA' 카테고리의 다른 글
[Java] 값 비교하기 compareTo 사용하기 (0) | 2021.11.17 |
---|---|
[JAVA] URL에 올려진 파일 다운로드 하는 방법 (0) | 2021.11.04 |
[Android/JAVA] 인터넷 연결 상태 확인하는 방법(코드) (0) | 2021.08.31 |
[JAVA] 문자타입을 정수형으로 변환하기(String to int) (2) | 2021.08.27 |
int형 정수를 2byte 배열로 변환 (0) | 2021.07.02 |
댓글