목차
- 자바 소스 코드 컴파일 명령 javac 예제 이전 포스팅
- 자바 파일 데이터 읽기 예제 이전 포스팅
- 자바 파일의 특정 값 수정 예제 이전 포스팅
- 자바 파일을 열고 데이터 가져오기 및 출력 예제
- 자바 사용자에게 단어를 입력받아 파일에서 단어들의 위치 출력 예제
자바 소스 코드 컴파일 명령 javac 예제 이전 포스팅
오늘은 자바에서 텍스트 파일을 읽고 텍스트들 중에서 특정 단어들의 오프셋(위치)를 구하는 예제를 알아보도록 하겠습니다. 우리가 텍스트파일을 관리하다보면 특정 단어들을 치환하거나 위치를 찾아내어 가공을 해야할 필요가 생깁니다. 이를 위해 오프셋이란 단어를 알아야합니다. 오프셋이란 어떠한 데이터가 시작되는 첫 위치를 의미합니다. 오늘 예제를 실행해보기 위해서는 javac 명령어를 통해 자바 소스코드 컴파일 방법을 알아야합니다. 아직 컴파일 방법을 모르신다면 아래 링크를 참조하여 학습해주세요.
2023.08.10 - [Linux] - [Linux/Java] 리눅스 우분투에서 java 컴파일 및 실행 예제(javac)
자바 파일 데이터 읽기 예제 이전 포스팅
이전 포스팅에서 로컬에 저장된 파일을 열고 데이터를 읽는 방법에 대해 포스팅한 적이 있습니다. 해당 내용을 참고하여 자바에서 텍스트를 읽어오는 방법을 학습해주세요.
2023.08.14 - [Java] - [Java/Linux] 파일 열고 바이트 출력 예제(FileInputStream)
자바 파일의 특정 값 수정 예제 이전 포스팅
마지막으로 파일에서 특정 값들을 일괄적으로 수정하는 예제도 이전 포스팅에서 다룬적이 있습니다. 오프셋을 가져오는 것이 아니라 파일 내용 수정이 필요하시다면 아래 링크를 참고해서 진행하시면 좋을 것 같습니다.
2023.08.14 - [Java] - [Java/Linux] 파일의 특정 값을 수정하여 저장하는 예제
자바 파일을 열고 데이터 가져오기 및 출력 예제
아래는 자바에서 파일을 열고 데이터를 가져와 출력하는 예제입니다.
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Example {
public static void main(String[] args) {
String filePath = "/tmp/test.txt"; // 파일 경로와 이름에 맞게 수정해주세요
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
자바 사용자에게 단어를 입력받아 파일에서 단어들의 위치 출력 예제
아래는 자바에서 사용자에게 단어를 입력받고 해당 단어들이 텍스트 파일에 어디에 위치해있는지 오프셋들을 출력하는 예제입니다.
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Example {
public static void main(String[] args) {
String filePath = "/tmp/test.txt"; // 파일 경로와 이름에 맞게 수정해주세요
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
List<String> lines = new ArrayList<>();
String line;
while ((line = reader.readLine()) != null) {
lines.add(line);
}
Scanner scanner = new Scanner(System.in);
System.out.print("검색할 단어를 입력하세요: ");
String searchWord = scanner.nextLine();
for (int lineNumber = 0; lineNumber < lines.size(); lineNumber++) {
String currentLine = lines.get(lineNumber);
int index = -1;
int startPosition = 0;
while ((index = currentLine.indexOf(searchWord, startPosition)) != -1) {
System.out.println("Line " + (lineNumber + 1) + ", Position " + index);
startPosition = index + searchWord.length();
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}