나는 자바 프로그래밍의 초보자이고 자바에서 16 진수 뷰어를 만들려고하는데, 나의 IDE는 Netbeans이다. 아래는 코드입니다.16 진수 뷰어 Java에서
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import static java.lang.System.out;
import javax.swing.JFileChooser;
public class hope {
public static void main(String[] args) throws IOException {
JFileChooser open = new JFileChooser();
open.showOpenDialog(null);
File f = open.getSelectedFile();
InputStream is = new FileInputStream(f);
int bytesCounter = 0;
int value = 0;
StringBuilder sbHex = new StringBuilder();
StringBuilder sbResult = new StringBuilder();
while ((value = is.read()) != -1) {
//convert to hex value with "X" formatter
sbHex.append(String.format("%02X ", value));
//if 16 bytes are read, reset the counter,
//clear the StringBuilder for formatting purpose only.
if (bytesCounter == 15) {
sbResult.append(sbHex).append("\n");
sbHex.setLength(0);
bytesCounter = 0;
} else {
bytesCounter++;
}
}
//if still got content
if (bytesCounter != 0) {
//add spaces more formatting purpose only
for (; bytesCounter < 16; bytesCounter++) {
//1 character 3 spaces
sbHex.append(" ");
}
sbResult.append(sbHex).append("\n");
}
out.print(sbResult);
is.close();
}
}
문제는 다음과 같습니다 1. 그것은 충분히 빠르게 파일을 읽을 수 없습니다 "그것은 200킬로바이트의 파일을 읽을 분 소요" 2. "메모리 부족"나는 시도 오류를 제공 큰 파일 예 80mb
원하는 작업 : 1. "16 진수 코드를 읽고"모든 파일 크기의 16 진수 표시 " 2. 오류 코드없이 모든 크기의 파일을 읽습니다.
[질문 :내가 변경하거나 "내가 그것을하고 싶어"위를 달성하기 위해 내 코드에 추가해야합니까?
[예제] (http://www.gubatron.com/blog/2009/04/20/how-to- make-a-quick-dirty-hexviewer 업데이트 /). – DevilsHnd
@DevilsHnd, 고맙습니다.하지만 코드는 2009 년 이후에 만들어졌습니다. 개선해야 할 부분이 많이 있으며, 어떤 이유로 인해 제대로 작동하지 않을지 생각합니다. 초보자라는 것을 기억하십시오. 주석이없는 Java 코드는 이해하고 편집하기가 어렵습니다. –
'sbHex.append()'와'sbResult.append()'대신에'out.print()'만을 쓰는게 어떨까요? 어쩌면 StringBuilder를 사용하는 것은 불필요한 것입니까? – gregn3