XMLStreamReader
-> 위치에 getCharacterOffset()
이라는 메서드가 있습니다.XMLStreamReader : 파일 오프셋 가져 오기 : XML
불행히도 Javadocs는 이것이 모호한 이름의 메소드라는 것을 나타냅니다. 바이트 오프셋을 반환 할 수도 있습니다 (실제로는 사실 인 것처럼 보입니다).
Javadoc 상태 :
반환이 위치가 가리키는 입력 소스에의 오프셋 (offset) 바이트 또는 문자를 unhelpfully이 파일에서 (예를 들어) 읽을 때 발생하는 것 같습니다. 입력 소스가 파일 또는 바이트 인 경우 스트림이이 스트림에 대한 바이트 오프셋이지만 입력 소스가 문자 미디어이면 오프셋은 문자 오프셋입니다. (강조 추가)
나는 실제로 문자 오프셋이 필요합니다; 그리고 저는 대체로 바이트 오프셋이 주어진다고 확신합니다.
(UTF-8로 인코딩 된) XML은 (부분적으로 손상된 1G) 파일에 포함되어 있습니다. [그러므로 실제로는 선택의 여지가 없어 질 때까지 잘 형성되지 않은 것에 대해 불평하지 않는 하위 수준의 API를 사용할 필요가 있습니다.]
질문이 말할 때
는 자바 독은 무엇을 의미 하는가은 '... 입력 소스는 문자 매체입니다 ...'나는 '문자 매체'로 내 입력 파일의 생각을 강제 할 수있는 방법 - 바이트 오프셋보다는 정확한 (문자) 오프셋을 얻을 수 있도록?
추가 ㅋ ㅋ ㅋ ㅋ :
가 [나는이 벌어지고있는 것입니다 확신 해요 - 내가 따로 파일을 제거 때 누락 또는 추가 몇 가지 문자를 얻을 (특정 알려진 높은 수준의 태그를 사용) - 비 누적 방식으로 - 나는 카운터를 던지면서 몇 가지 멀티 바이트 문자로 차이를 둡니다 : 또한 복사 할 때 (Powershell에서 'head'/ 'tail'을 사용하여 -이 도구가 올바르게 나타납니다 [UTF-8을 인식하거나 UTF-16으로 잘 변환]
바이트 스트림
XMLInputFactory.createXMLStreamReader(java.io.Reader)
이다. createXMLEventReader (새 FileInputStream에 (...))), getCharacterOffset()의 반환 유형은 int이지만, 파일 (바이트)은 File.length()에 따라 긴 크기의 파일이 될 수 있습니다. –