반응형
파일을 읽고 쓰고 생성하고 삭제하기 위해 사용!
문자/바이트 기반 스트림의 간단한 입출력 코드활용
파일 클래스
InputStream (가져오기) / OutputStream (내보내기)
스트림을 단방향으로
File 입출력 스트림은, 바이트 기반 스트림 / 바이트 기반은 입출력 단위가 1byte라는 뜻
Java에서 char 타입은 2byte(자바 기본 유닛 참고)
1.터미널에 입력
echo code >> java.txt
//파일이 생성됨
2. main 클래스에 실행 해주
FileInputStream fileInputStream = new FileInputStream("java.txt");
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-16");
int i = 0;
while((i = inputStreamReader.read()) != -1){
System.out.println((char)i);
}
fileInputStream.close();
▼ 한글도 가능함 ▼
FileInputStream fileInputStream = new FileInputStream("java.txt");
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-16");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader)) {
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
파일의 인코딩이 Java의 기본 문자 인코딩과 일치하지 않으면 문자가 깨진 현상이 발생할수 있음 (위에 코드가 방지할수있음)
- InputStreamReader 사용: 바이트 스트림을 문자 스트림으로 변환하면서 인코딩 지정.
- BufferedReader 사용: 효율적으로 파일을 한 줄씩 읽음.
- UTF-16 지정: BOM을 무시하고 파일 내용을 정상적으로 처리.
OutputStream -- 덮어씀
FileReader / FileWriter
File 입출력 스트림은, 바이트 기반 스트림 / 바이트 기반은 입출력 단위가 1byte라는 뜻
Java에서 char 타입은 2byte(자바 기본 유닛 참고)임
이를 해소하기 위해 자바에서는 문자 기반 스트립을 제공!
FileReader
String fileName = "java.txt";
FileReader file = new FileReader(fileName);
int data = 0;
while((data=file.read()) != -1) {
System.out.print((char)data);
}
file.close();
위에서 덮어쓴 문자를 읽어와서 출력
FileWriter
String fileName = "java.txt";
FileWriter writer = new FileWriter(fileName);
String str = "written!";
writer.write(str);
writer.close();
그냥 그 뒤에 입력하고 싶은 문자열을 넣음
파일이 없으면 스스로 만들어서 내가 넣고싶은 문자열을 그 안에 담음
close 시점할때 담기기에 꼭 close 해 줘야 실행이 됨
총 합치면 아래 코드처럼 사용
//문자열 파일 생성후 만들어줌
FileWriter fileWriter = new FileWriter("Practice.txt");
String message = "Hello World!";
fileWriter.write(message);
fileWriter.close();
//불러옴
FileReader fileReader = new FileReader("Practice.txt");
int i = 0;
while ((i = fileReader.read()) != -1){
System.out.println((char)i);
}
fileReader.close();
File
File file = new File("../../java.txt");
// ../상대경로
System.out.println(file.getPath());
System.out.println(file.getParent());
System.out.println(file.getCanonicalPath());
System.out.println(file.canWrite());
// ./ 현재를 기준으로 true 나옴
//파일이 없거나 권한이 없어도 false 나옴
파일이 없으면 생성 시키고 이름 변경도 가능
File file = new File("./spring.txt");
file.createNewFile();
file.renameTo(new File("./","java_spring.txt"));
반응형
'IT > JAVA' 카테고리의 다른 글
JAVA - 자바 가상 머신(Java Virtual Machine) (0) | 2024.12.03 |
---|---|
JAVA - 스레드(Thread) (0) | 2024.12.03 |
JAVA - 스트림(Stream) (0) | 2024.12.02 |
JAVA - 람다(Lambda) (0) | 2024.12.02 |
JAVA - 애너테이션(Annotation) (1) | 2024.12.02 |