Java의 바이트 배열에서 .doc 또는 .docx 파일을 읽으려고합니다.MS Word에서 파일을 다시 저장할 때마다 Java에서 .doc 또는 .docx 파일의 바이트 배열이 변경되는 이유는 무엇입니까?
Path file_path = Paths.get("D:\\", "myname3.doc");
byte[] ByteArray= Files.readAllBytes(file_path);
for(byte b : ByteArray){
System.out.print(b);
}
코드 잘 작동하고 나는 바이트 배열을받을 - : 나는 가장 단순한 수준에서 아파치 POI, 티카, doc4j 등 코드와 같은 제 3 자 API를 사용하기를 기대하고 있지 않다 같습니다. 그러나 MS Word에서 동일한 파일을 다시 열 때 변경하지 않고 같은 내용으로 동일한 드라이브에 다시 저장하면 수신하는 바이트 배열이 완전히 다릅니다. 수정 된 시간과 관련된 MetaData의 차이점은 있지만 바이트 배열은 파일의 전체 내용이 변경된 것처럼 완전히 다릅니다. (두 반복의 바이트 배열을 포함하는 텍스트 파일 첨부). Difference in Byte Array
제 3 자 API를 사용하지 않고도 해결책이 있습니까?
참고 : - MS 웹 사이트에서 제공 한 Word 인코딩 형식을 통과했으며, 경우에 따라 엔디안 문제를 검토했습니다. 또한 FileInputStreamReader를 통해 파일 읽기를 시도했습니다.
참고 : -이 프로그램은 ASCII 형식의 텍스트 파일에 잘 작동합니다.
EDIT 1 : 질문을 맑게 만드십시오. dfferent 이름으로 같은 위치에 두 번 저장된 .docx 파일을 읽을 때 바이트 배열은 위의 프로그램을 사용하여 파일을 읽을 때 완전히 다릅니다. 나는 그 이유를 알고 싶다.
EDIT 2 : - 내가 OffVis 도구에서 파일을 읽으려고 시도했습니다. 또한 원시 바이트가 다릅니다.
무엇이 문제입니까? 분명하지 않다. –
두 바이트 배열을 디스크에 다시 저장하고 두 파일이 열리고 내용이 동일한 지 확인하십시오. – tfosra
바이트 배열을 char 형식으로 변환해야하므로 바이트가 변환되기 때문에 내용이 동일하지 않습니다 char. @tfosra –