1. 자바 프로젝트 생성

2. 파일 읽기
파일을 읽을때 클래스 로더에 있는 파일을 읽는것과 경로상에 있는 파일을 읽을때 두가지 소스를 정리해보려고 한다.
항상 파일쪽을 만들때 헷갈려서 참고해야겠다.
2.1. ReadResourceFile
<java />
package utils.files;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
/**
* 클래스로더를 통해서 리소스 파일 읽기
*/
public class ReadResourceFile {
public static void main(String[] args) {
String resourcePath = "/templates/readFile.txt";
try (
InputStream inputStream = ReadResourceFile.class.getResourceAsStream(resourcePath);
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader reader = new BufferedReader(inputStreamReader)
) {
String line;
while( (line = reader.readLine()) != null){
System.out.println(line);
}
} catch (IOException e) {
}
}
}
try-catch 문을 대신해서 Java 7 버전이후부터는 try-with-resources 구문이 나왔다고 한다.
자동으로 안쓰는 자원을 close 해준다해서 사용해봤다.
클래스명.class.getResourceAsStream 은 src/main/resources 의 클래스패스를 접근할수 있다고 한다.
클래스패스에 있는 txt 파일을 읽어서 print 해주는 코드이다.
2.2. ReadResourceFile2
<java />
package utils.files;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class ReadResourceFile2 {
public static void main(String[] args) {
final Path DIR_PATH = Paths.get("C:","filePath","post");
Path filePath = Paths.get(DIR_PATH + File.separator + "writeFile.txt");
try(BufferedInputStream bis = new BufferedInputStream(Files.newInputStream(filePath))){
StringBuilder builder = new StringBuilder();
byte[] buffer = new byte[1024];
int byteRead;
while( (byteRead = bis.read(buffer)) != -1){
builder.append(new String(buffer, 0,byteRead));
}
System.out.println("builder = " + builder.toString());
}catch (IOException e){
}
}
}
첫번째와는 다르게 BufferedInputStream 을 활용해서 해보았다 C드라이브 하위경로에 있는 writeFile.txt를 읽는 소스이다.
BufferedReader 와 BufferedInputStream 의 차이는 정확히 몰라서 검색해 보았다.
둘다 데이터를 효율적으로 읽기위한 클래스 이지만 BufferedInputStream 은 바이트 단위로 데이터 읽을때 사용되며 주로 파일이나 네트워크 소켓과 같은 이진 데이터를 읽을때 사용되며 BufferedReader의 경우 문자 단위로 데이터 읽을때 사용되며 텍스트파일이네 문자열 데이터를 읽을때 사용된다 .
3. 파일 쓰기
<java />
package utils.files;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Paths;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
/**
* 파일 생성 및 쓰기
*/
public class WriteFile {
static final String FILE_PATH = Paths.get("C:","filePath","post").toString();
public static void main(String[] args) {
LocalDate now = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
String fileName = "writeFile" + now.format(formatter) + ".txt";
try(BufferedWriter writer = new BufferedWriter(new FileWriter(new File(FILE_PATH + File.separator + fileName)))){
StringBuilder builder = new StringBuilder();
String line;
writer.write("안녕하세요 1");
}catch (IOException e){
}
}
}
BufferedWriter 를 이용해서 파일을 생성해준다.
BufferedWriter 와 BufferedReader를 이용해서 파일을 읽어서 새 파일을 쓸때도 쓸수있다.
'IT 기술 > 자바[Java]' 카테고리의 다른 글
[Java] JAR 파일 응용프로그램 .exe 만들기 (0) | 2024.02.03 |
---|---|
[Java Intellij] Jar 파일 만들기 - 부제 No main manifest attribute (0) | 2024.02.02 |
[Java Swing] 인텔리제이 , 그리고 NetBeans Swing GUI 툴 (1) | 2024.01.19 |
[Java] Thread란 무엇인가? (0) | 2021.03.10 |
이클립스 툴팁(hover) 검은창 해결방법 (0) | 2020.12.14 |