FileOutput(파일 출력)
2023. 7. 20. 12:56ㆍJAVA
사용자로부터 문자열 데이터를 입력받아 File에 저장하는 프로그램
Scanner scan= new Scanner(System.in);
System.out.print("저장할 데이터 입력 : ");
//파일에 저장할 데이터
String data= scan.next();
데이터를 저장할 파일의 경로와 파일명.확장자까지 관리해주는 객체 생성
만약 경로를 지정하지 않으면 이 자바파일이 있는 프로젝트폴더가 기본경로가 됨.
File file= new File("aaa.txt");
폴더 구분용 특수문자 : 역슬래시 or 슬래시
windows 운영체제 - 역슬래시와 슬래시 모두 사용가능
linux, Mac 운영체제 - 슬래시만 됨
역슬래시를 이스케이프문자로 오해하기에 2개를 써야 함
file=new File("kkk\\aaa.txt"); // 역슬래시를 이스케이프문자로 오해하기에 2개를 써야 함
file=new File("kkk/aaa.txt"); //내 프로젝트 폴더/kkk폴더/aaa.txt
폴더를 만드는 작업도 코드로 명령할 수 있음.
File path=new File("temp"); //폴더명만 지정
if( !path.isDirectory() ) { //폴더가 없는가?
path.mkdirs(); //하위폴더까지 모두 만들어줌
}
경로와 파일명을 결합
file= new File(path, "aaa.txt");
드라이브 지정도 가능
file= new File("D:/aaa.txt");
그 중에서 파일에 내보내는 능력에 특화된 FileOutputStream클래스를 객체로 생성
만약 aaa.txt파일이 없다면 자동 생성시킴. 단, 폴더는 자동으로 생성되지 않음.
기본적으로 aaa.txt파일 존재하면 덮어쓰기함. 만약, 이어붙이기를 하고 싶다면 두번째 파라미터를 지정
FileOutputStream fos = new FileOutputStream(file,true); //두번째 파라미터 true : append
파일객체가 가진 파일에 데이터를 보내기 위해 다리(Stream) 생성
Stream은 일방통행임. 내보내는 방향의 OutputStream을 사용
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
public class FileOutputTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 사용자로부터 문자열 데이터를 입력받아 File에 저장하는 프로그램
Scanner scan= new Scanner(System.in);
System.out.print("저장할 데이터 입력 : ");
//파일에 저장할 데이터
String data= scan.next();
//데이터를 저장할 파일의 경로와 파일명.확장자까지 관리해주는 객체 생성
//만약 경로를 지정하지 않으면 이 자바파일이 있는 프로젝트폴더가 기본경로가 됨.
File file= new File("aaa.txt");
//특정 경로에 파일 저장해보기 #################
// 폴더 구분용 특수문자 : 역슬래시 or 슬래시
// windows 운영체제 - 역슬래시와 슬래시 모두 사용가능
// linux, Mac 운영체제 - 슬래시만 됨
file=new File("kkk\\aaa.txt"); // 역슬래시를 이스케이프문자로 오해하기에 2개를 써야 함
file=new File("kkk/aaa.txt"); //내 프로젝트 폴더/kkk폴더/aaa.txt
//폴더를 만드는 작업도 코드로 명령할 수 있음.
File path=new File("temp"); //폴더명만 지정
if( !path.isDirectory() ) { //폴더가 없는가?
path.mkdirs(); //하위폴더까지 모두 만들어줌
}
//경로와 파일명을 결함
file= new File(path, "aaa.txt");
//드라이브 지정도 가능
file= new File("D:/aaa.txt");
//#####################################
//파일객체가 가진 파일에 데이터를 보내기 위해 무지개로드(Stream) 생성
//Stream은 일방통행임. 내보내는 방향의 OutputStream을 사용
//그 중에서 파일에 내보내는 능력에 특화된 FileOutputStream클래스를 객체로 생성
try {
//만약 aaa.txt파일이 없다면 자동 생성시킴. 단, 폴더는 자동으로 생성되지 않음.
//기본적으로 aaa.txt파일 존재함녀 덮어쓰기함. 만약, 이어붙이기를 하고 싶다면 두번째 파라미터를 지정
FileOutputStream fos = new FileOutputStream(file,true); //두번째 파라미터 true : append
//스트림을 통해 데이터를 파일에 저장(작성, 내보내기)
// fos.write(65); //보낼 데이터의 아스키값을 전달
//위 방식은 1바이트씩 데이터를 보내기 때문에 반복문이 필요함
//그래서 byte배열로 데이터덩어리를 보내는 방식을 선호함
byte[] bytes= data.getBytes(); //문자열 -->바이트배열 변환
fos.write(bytes);
fos.flush(); //Stream버퍼애 찌꺼기가 남아있을 수 있어서 비우도록..(물 내리기)
//언제나 스트림 작업이 끝나면 스트림을 닫는 명령을 줘야 함.
fos.close();
//여기까지 커서가 왔다면.. 에러가 없었다는 것임.
System.out.println("파일 저장 성공");
} catch (FileNotFoundException e) {
System.out.println("파일이 존재하지 않습니다.");
e.printStackTrace();
} catch (IOException e) {
System.out.println("쓰기작업 중 오류가 발생했습니다.");
}
}
}
Stream버퍼애 찌꺼기가 남아있을 수 있어서 비우기 해야함 - fos.flush();
언제나 스트림 작업이 끝나면 스트림을 닫는 명령을 줘야 함. - fos.close();
'JAVA' 카테고리의 다른 글
| 네트워크 통신 - Client (0) | 2023.07.21 |
|---|---|
| 네트워크 통신 - Server (0) | 2023.07.21 |
| FileInput(파일 입력) (0) | 2023.07.20 |
| Thread Control 예제 (0) | 2023.07.19 |
| Synchronized기능과 예제 (0) | 2023.07.19 |