flush()는 바이트 단위마다 쓰고 저장하는것이 아닌 버퍼 공간에 쌓았다가 flush()가 호출되면 대기하고 있는 데이터를 강제로 쓰게하는 기능이다.public class FileTest {
public void readFile(String fileName) {
FileReader fileReader = null;
BufferedReader bufferedReader = null;
try {
**fileReader = new FileReader(fileName);
bufferedReader = new BufferedReader(fileReader);
String data;
while((data = bufferedReader.readLine()) != null) {
System.out.println(data);
}**
} catch (Exception e) {
e.printStackTrace();
} finally {
if(bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(fileReader != null) {
try {
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
Scanner클래스는 텍스트 기반의 기본 자료형이나 문자열 데이터를 처리하기 위한 클래스이다.
정규표현식을 사용하여 데이터를 잘라서 쓸수도 있다. 위의 코드에서 Scanner로 리팩토링 했는데 코드의 양이 줄어든것도 확인 할 수 있다.
public void readFile(String fileName) {
File file = new File(fileName);
Scanner scanner = null;
try {
scanner = new Scanner(file);
while (scanner.hasNextLine()) {
System.out.println(scanner.nextLine());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (scanner != null) {
scanner.close();
}
}
}