2013-01-24 1 views
4

유일한 방법은 내가 아는 자바에서 파일을 읽을 수 있도록 나는 안돼서은파일 유형을 모르는 경우 어떤 독서 수업을 사용해야합니까?</p> <pre><code>DataInputStream dis = new DataInputStream(new FileInputStream(<FILE>)); </code></pre> <p>과 :

BufferedReader br = new BufferedReader(new FileReader(<FILE>)); 

그리고 나도 그 첫 번째 처리의 목적을 제공하면서 이진 파일은 문자/텍스트 파일에 사용됩니다 (현재 나의 이해를 위해 : 메모장을 열고 열 수 있고 인간이 실제로 읽을 수있는 것을 볼 수 있습니다). 문제는 다음과 같습니다. 문제가 바이너리 또는 텍스트 파일을 처리해야하는지 여부가 나와 있지 않은 경우 어떻게해야합니까? 내 말은 : 파일에서 객체를 읽을 때, 예를 들어, 처음이라는 것을 알았지 만, "당신의 방법은 학생들의 이름이 들어있는 XYZ 파일을 읽는 것입니다. 어떤 것을 처리해야할까요? "

나는 그런 작업을 한 번 봤는데 어떤 것을 사용해야할지 확신하지 못했습니다. 설명에 명시 적으로 파일의 유형을 명시하지 않거나 아무것도 언급되지 않으면 우리가 X를 다루고 있다고 가정하는 것이 더 안전 할 수있는 몇 가지 규칙이 있습니까?

답변

3

당신은 당신이 읽고 싶은 유형을 알 수 필요성을 .

사양이 명확하지 않은 경우 혼자서 정의하고 문서화하십시오. 기존 파일이 이미있는 경우 파일을보고 "접근 할 수없는"문자가없는 행 지향적 인 경우 접근 방법을 결정할 수 있습니다. 한 줄에 하나의 이름이 있으면 텍스트 파일 접근 방식을 취할 것입니다. 텍스트 편집기에서 열 때 이상하게 보일 경우 이진 파일을 사용할 수 있지만이 경우 제대로 읽을 수 있으려면 추가 정보가 필요합니다. 파일 시스템 레벨에서

는 "바이너리"또는 "텍스트"파일과 같은 같은 것은 없다 - 당신이 그것을 해석 방법에 따라 달라집니다. 각 파일을 이진 파일로 읽을 수 있습니다 (개별 바이트를 고려하면 16 진수 편집기가 수행합니다). 그리고 각 파일을 텍스트로 읽을 수 있습니다 (거의 모든 파일을 텍스트로 읽을 수 있습니다. 그것을 인쇄하십시오). (필자는 "거의"라고 말했는데, 하나의 문자가 두 개 이상의 바이트로 구성되는 멀티 바이트 문자가있는 제약이 있기 때문입니다. 그러나이 파일조차도 "확장 ASCII"파일로 취급 될 수 있습니다. 어떤 경우

, 당신은 당신이 예상 파일 형식을 문서화해야합니다 (심지어 "텍스트"파일 등 다른 구조와 같은 고정 라인 길이, 가변 라인 길이를 가질 수있다).

+0

고맙습니다. 시험이 진행되고 지난 몇 년간의 과제를 탐색하면서 대학 시절을 요구하고 있습니다. 문제가 있음을 알았습니다.나는 시험 중에 어떤 질문도 할 수 없을 것이다. 그래서 나는 시간이 올 때 혼란스럽지 않을 계획을 생각하고있다. : – Straightfw

+2

좋은 질문과 좋은 대답. – Perception

0

"귀하의 방법은 처리 할 학생의 이름이 포함 된 파일 XYZ를 읽는 것입니다." 내가 강조했습니다 그 진술을 바탕으로

, 나는 파일이 텍스트 기반 데이터를 포함 인상 될 것입니다.

이 시점에서 "리더"의 파생어를 사용하여 읽어야합니다.

파일이 고정 된 구조를 가지고 있다면, 당신의 InputStream 또는 그 유도체를 사용하는 것이 좋습니다. 귀하의 경우에는

하지만, 학생 이름의 문자 데이터를 읽는 간단한 작업이 될 것으로 보인다.