목차
- javac 활용 자바 소스 코드 컴파일 예제 이전 포스팅
- 자바 파일 열고 데이터 가져오기 예제 이전 포스팅
- 자바 파일 복사하기 예제 이전 포스팅
- 자바 파일 바이트 값 가져와서 내용 수정 예제
- 수정된 파일 바이트 값으로 기존 파일에 저장 예제
javac 활용 자바 소스 코드 컴파일 예제 이전 포스팅
안녕하세요 오늘은 파일 내부에 있는 특정한 값을 다른 값으로 수정하는 방법에 대해 알아보도록하겠습니다. 오늘 예제는 자바 언어로 작성되기때문에 java 소스 코드 파일을 컴파일하여 실행파일인 class로 변환해야합니다. 이러한 컴파일 과정에서는 javac가 사용됩니다. 만약 아직 javac 명령어를 활용하여 자바 소스 코드파일을 컴파일 할 줄 모르신다면 아래 링크를 참고하여 학습해주세요.
2023.08.10 - [Linux] - [Linux/Java] 리눅스 우분투에서 java 컴파일 및 실행 예제(javac)
자바 파일 열고 데이터 가져오기 예제 이전 포스팅
오늘 다룰 예제 주제는 이전에 저장되어있던 파일의 특정 값을 수정하는 것입니다. 하지만 프로그래밍상 원래 있던 파일을 그대로 값만 바꾸는 행위를 할 수는 없습니다. 우리 눈에는 보이지 않지만 원본의 값을 로드하여 바이트 배열로 변환한후 값을 수정하여 다시 동일한 이름의 파일로 만드는 것이죠. 이처럼 오늘 예제는 파일을 열고 데이터를 가져와야하기때문에 만약 이 과정을 아직 모르신다면 아래 링크를 통해 학습해주세요.
2023.08.14 - [Java] - [Java/Linux] 파일 열고 바이트 출력 예제(FileInputStream)
자바 파일 복사하기 예제 이전 포스팅
마지막으로 파일을 복사하는 방법에 대해서도 이전 포스팅에서 다뤘습니다. 오늘 주제와 비슷한 과정이 많이 있으니 참고하시면 좋을 것 같습니다.
2023.08.14 - [Java] - [Java/Linux] 파일 복사하기 예제(FileInputStream)
자바 파일 바이트 값 가져와서 내용 수정 예제
아래는 자바에서 원래 저장되어있던 파일의 데이터를 바이트배열로 가져와 내용을 수정하는 예제입니다. 원래의 문자열에서 특정 단어를 찾아내어 수정 합니다. 파일을 "rw" 즉 읽기, 쓰기가 모두 가능한 모드로 열고 RandomAccessFile를 활용하여 파일을 읽고 씁니다.
import java.io.*;
public class Example {
public static void main(String[] args) {
String filePath = "/tmp/test.txt";
int oldValue = 0x62; // 원래 값
int newValue = 0x32; // 새로운 값
try (RandomAccessFile randomAccessFile = new RandomAccessFile(filePath, "rw")) {
long fileLength = randomAccessFile.length();
for (long i = 0; i < fileLength; i++) {
randomAccessFile.seek(i);
int byteValue = randomAccessFile.read();
if (byteValue == oldValue) {
randomAccessFile.seek(i);
randomAccessFile.write(newValue);
}
}
System.out.println("Bytes modified successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}