Android系统。从文件中读取内容

时间:2012-09-08 06:19:41

标签: java android

我正在使用下一个方法来读取文件中的内容。这里的问题是我只限于为inputBuffer指定的字符数(在这种情况下为1024)。

首先,如果内容小于1024个字符长,我会得到很多空白字符,我需要使用trim来删除它们。

其次,这更重要,我想读取文件的全部内容,即使它超过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();
}

1 个答案:

答案 0 :(得分:2)

您可以在分配缓冲区之前读取#/字节:

// 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));

另一种解决方案是将输入读取为字符串,一次读取一行。