0

次の方法を使用して、ファイルからコンテンツを読み取ります。ここでの問題は、指定された文字数inputBuffer(この場合は 1024) に制限されていることです。

まず、コンテンツの長さが 1024 文字未満の場合、大量の空白文字が表示されるため、トリムを使用してそれらを削除する必要があります。

2 番目に、これはより重要なことですが、1024 文字を超えるファイルであっても、ファイルの内容全体を読み取り、それをStringオブジェクトに挿入したいと考えています。.availableこのメソッドを使用して、ファイルにさらにデータがあるかどうかを判断するべきではないことを理解しました。正確ではないか、そのようなものだからです。

これをどのように行うべきかについてのアイデアはありますか?

public String getContent( String sFileName )
{
    //Stop in case the file does not exists
    if ( !this.exists( sFileName ) )
        return null;

    FileInputStream fIn = null;

    InputStreamReader isr = null;

    String data = null;

    try{

        char[] inputBuffer = new char[1024];

        fIn = _context.openFileInput(sFileName);

        isr = new InputStreamReader(fIn);

        isr.read(inputBuffer);

        data = new String(inputBuffer);

        isr.close();

        fIn.close();

    }catch(IOException e){

        e.printStackTrace(System.err);
        return null;

    }

    return data.trim();
}
4

1 に答える 1

2

バッファを割り当てる前に #/bytes を読み取ることができます:

// Poor
char[] inputBuffer = new char[1024];
fIn = _context.openFileInput(sFileName);
isr = new InputStreamReader(fIn);

// Better
long nbytes = new File(sFileName).length();
char[] inputBuffer new char[nbytes];
isr = new InputStreamReader (
  _context.openFileInput (sFileName));

もう 1 つの解決策は、入力を一度に 1 行ずつ文字列として読み取ることです。

于 2012-09-08T06:25:35.843 に答える