1

これはおかしなことに聞こえるかもしれませんが、ファイルから読み取っていて、ファイルの最初の行をスキップしているようです。

何が起こっている?

ソースは次のとおりです。


    private void loadFile(String fileNPath)
    {
        StringBuilder currentFileContents = new StringBuilder();
        CharBuffer contentsBuffer = CharBuffer.allocate(65536);

        int status=0;
        try
        {
            BufferedReader in = new BufferedReader(new FileReader(fileNPath));

            while(status!=-1)
            {
                status=in.read(contentsBuffer);
                currentFileContents.append(contentsBuffer);
                contentsBuffer.clear();
            }

            System.out.println(currentFileContents.toString());
        }
        catch(FileNotFoundException n)
        {
            //Should be imposible
        }
        catch(IOException n)
        {
            n.printStackTrace(System.out);
        }

    }

それは私が見過ぎているものに違いない。

正確なソースをコピーして貼り付けたので、これがあなたにも起こることを願っています。

ありがとう、caalip

4

3 に答える 3

3

自分のやり方でファイルを読んでいる特別な理由はありますか?

親クラスのメソッド(たとえば、メソッドBufferedReaderがない)を使用していて、それ自体は少しやり過ぎです。実際の問題は、正しく使用していないことだと思います(通常、Bufferオブジェクトを反転して排出しますが、これがどのように操作されるかを確認するには、さらに詳しく調べる必要があります)read(CharBuffer)CharBuffer

ファイルを読み取るために必要なのは次のとおりです。

StringBuilder currentFileContents = new StringBuilder();
try
{
    BufferedReader in = new BufferedReader(new FileReader(fileNPath));
    String line = null;
    while( (line = in.readline()) != null )
    {
        currentFileContents.append(line);
    }

    System.out.println(currentFileContents.toString());
}
catch(FileNotFoundException n)
{
    //Should be imposible
}
catch(IOException n)
{
    n.printStackTrace(System.out);
}
于 2011-05-01T22:22:39.613 に答える
1

これは少し奇妙に思えます。tryブロックを次のように変更してみてください。

try
    {
        BufferedReader in = new BufferedReader(new FileReader(fileNPath));

        status=in.read(contentsBuffer.array(), 0, 65536);
        currentFileContents.append(contentsBuffer);

        System.out.println(currentFileContents.toString());
    }

このコードは実行していませんが、試してみてください。

更新:私はあなたのコードを実行し、あなたが説明した問題に遭遇しました。リビジョンを使用してコードを実行しましたが、機能します。

于 2011-05-01T22:09:27.863 に答える
0

FileUtilsを使用します。これを1行で行うreadFileToString(ファイル)。

ただし、テキストファイルでコードを実行すると、すべての行が表示されます。問題はあなたのコードにあるのではないかと思います。

于 2011-05-01T22:00:09.637 に答える