4

私は初心者なので、私が知っているJavaでファイルを読み取る唯一の方法は次のとおりです。

DataInputStream dis = new DataInputStream(new FileInputStream(<FILE>));

と:

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

そして、最初のものはバイナリファイルを処理する目的を果たしますが、後者は文字/テキストファイルに使用されることを知っています(私の現在の理解では、たとえばメモ帳でそれらを開いて、人間が実際に読むことができるものを見ることができます)。問題は、バイナリ ファイルとテキスト ファイルのどちらを扱うべきかが問題に明記されていない場合はどうなるかということです。つまり、たとえば、ファイルからオブジェクトを読み取る場合、それが最初のものであることはわかっていますが、「あなたの方法は、学生の名前を含むファイルXYZから読み取ることです.あなたが処理するもの(などなど)」?

私はそのようなタスクに出くわしましたが、どれを使用すればよいかわかりませんでした。説明にファイルの種類が明示的に記載されていない場合、または何も言われていない場合は X を扱っていると想定する方が安全であるという規則がある場合は、好きなものを使用できますか?

4

2 に答える 2

3

読みたいタイプを知る必要があります

仕様が不明確な場合は、自分で定義 (および文書化) してください。すでに既存のファイルがある場合は、それを見て、どのアプローチを取るかを決定できます。行指向で、「判読できない」文字が含まれていない場合 (たとえば、1 行に 1 つの名前)、テキスト ファイルを使用します。アプローチ。テキスト エディターで開いたときに奇妙に見える場合は、バイナリ ファイルであると見なすことができますが、この場合、正しく読み取るために追加情報が必要です。

ファイル システム レベルでは、「バイナリ」ファイルや「テキスト」ファイルのようなものはありません。解釈方法によって異なります。各ファイルをバイナリ ファイルとして読み取ることができ (個々のバイトを考慮すると、これは 16 進エディターが行うことです)、(ほぼ) 各ファイルをテキストとして読み取ることができます (そして、ほとんどの場合、最終的にはゴミのように見えるものになります。印刷します)。(マルチバイト文字にはいくつかの制約があり、1 つの文字が複数のバイトから構成されるため、「ほぼ」と言いました。しかし、これらのファイルでさえ、各バイトが正確に 1 つの文字にマップされる「拡張 ASCII」ファイルとして扱うことができます)。

いずれにせよ、期待するファイル形式を文書化する必要があります (「テキスト」ファイルでさえ、固定行長、可変行長など、さまざまな構造を持つことができます)。

于 2013-01-24T11:14:25.707 に答える
0

「あなたの方法は、あなたが処理する学生の名前を含むファイルXYZから読み取ることです(など)」?

私が強調したその声明に基づいて、ファイルにはテキストベースのデータが含まれているという印象を受けます。

その時点で、「Reader」の派生物を使用して読む必要があります。

ファイルの構造が固定されている場合は、InputStream またはその派生物を使用することを検討してください。

あなたの場合は、学生の名前の文字データを読み取るという単純なタスクのように見えます。

于 2013-01-24T11:18:05.713 に答える