일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- json
- CSS
- Button
- string
- 이클립스
- 자바
- 자바스크립트
- 문자열
- html
- 인텔리제이
- 배열
- javascript
- Maven
- Array
- list
- IntelliJ
- vscode
- Eclipse
- Java
- Visual Studio Code
- 이탈리아
- ArrayList
- input
- table
- 테이블
- windows
- js
- date
- CMD
- Files
- Today
- Total
어제 오늘 내일
[Java] Text 파일 라인수 세기 본문
Java API를 이용하여 파일을 다루는 방법을 알아보고 있습니다.
[Java] 파일 생성하는 3가지 방법 (File, FileOutputStream, Files)
이번에는 text 파일의 라인수를 세는 방법을 소개합니다.
Java의 다양한 API를 활용할 수 있는데,
대부분 텍스트 파일을 한 줄씩 끝까지 읽으면서
라인수를 카운트합니다.
- Files
- BufferedReader
- LineNumberReader
- Scanner
1. Files
Files의 lines()와 Stream의 count() 메소드를 사용하여, 파일의 라인수를 구할 수 있습니다.
java.nio.file.Files
public static Stream<String> lines(Path path)
파일에서 line을 읽어서 Stream으로 리턴합니다.
java.util.stream.Stream<T>
long count()
Stream으로 들어온 element의 갯수를 세서 리턴 합니다.
예제
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class FileLineCount {
public static void main(String[] args) {
Path path = Paths.get("d:\\example\\text_file.txt");
try {
// 파일 라인수 세기
long lineCount = Files.lines(path).count();
// 결과 출력
System.out.println(lineCount);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Files.lines(path).count();
lines() 메소드는 파일에서 모든 line을 읽어서 Stream으로 리턴하고,
count() 메소드는 Stream의 element 갯수를 리턴합니다.
2. BufferedReader
예제
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class FileLineCount {
public static void main(String[] args) {
try {
// BufferedReader 생성
BufferedReader reader = new BufferedReader(new FileReader("d:\\example\\text_file.txt"));
// 라인수 세기
int lineCount = 0;
while (reader.readLine() != null) {
lineCount++;
}
// 결과 출력
System.out.println(lineCount);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
while (reader.readLine() != null) {
lineCount++;
}
BufferedReader의 readLine() 메소드는
파일의 한 라인을 읽어서 그 내용을 String으로 리턴하고,
파일의 끝을 만나면 null을 리턴합니다.
이 점을 이용해서, 파일이 끝날 때까지 읽으면서 라인수를 증가시켜서
파일의 전체 라인 수를 구합니다.
3. LineNumberReader
java.io.LineNumberReader 클래스는 줄번호를 추적하는 buffered character-input stream입니다.
java.io.LineNumberReader
public int getLineNumber()
getLineNumber() 메소드를 이용하면, 현재 줄번호를 가져올 수 있습니다.
예제
import java.io.FileReader;
import java.io.IOException;
import java.io.LineNumberReader;
public class FileLineCount {
public static void main(String[] args) {
try {
// LineNumberReader 생성
LineNumberReader reader = new LineNumberReader(new FileReader("d:\\example\\text_file.txt"));
// 라인수 세기
while (reader.readLine() != null) ;
int lineCount = reader.getLineNumber();
// 결과 출력
System.out.println(lineCount);
} catch (IOException e) {
e.printStackTrace();
}
}
}
while (reader.readLine() != null) ;
while 문의 body부분에서는 아무것도 하지 않고,
reader.readLine()의 결과가 null일때까지 계속해서 readLine() 메소드를 호출합니다.
(reader.readLine()의 결과가 null인 경우는, 파일의 끝을 만났을 때 입니다.)
int lineCount = reader.getLineNumber();
파일의 끝에서, getLineNumber() 메소드를 호출하여, 줄번호를 체크합니다.
4. Scanner
예제
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
public class FileLineCount {
public static void main(String[] args) {
try {
// Scanner 생성
Scanner scanner = new Scanner(new FileReader("d:\\example\\text_file.txt"));
// 라인수 세기
int lineCount = 0;
while (scanner.hasNextLine()) {
scanner.nextLine();
lineCount++;
}
// 결과 출력
System.out.println(lineCount);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Scanner를 사용하여, 파일을 한줄씩 읽으면서
lineCount를 증가시키고 있습니다.
Java API를 이용하여, 텍스트 파일의 라인수를 세는 방법을 알아보았습니다.
'IT > Java' 카테고리의 다른 글
[Java] 파일 특정 라인 읽기 (0) | 2021.06.06 |
---|---|
[Java] 텍스트 파일의 마지막 라인부터 읽기 (0) | 2021.06.06 |
[Java] 파일 최종수정일자 변경하기 (0) | 2021.06.05 |
[Java] 파일의 최종 수정일자 조회 (0) | 2021.06.05 |
[Java] 파일 또는 디렉토리 생성일자 구하기 (0) | 2021.05.31 |