Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓从文件中读取内容_Java_Android - Fatal编程技术网

Java 安卓从文件中读取内容

Java 安卓从文件中读取内容,java,android,Java,Android,我正在使用下一种方法从文件中读取内容。这里的问题是,我被限制为inputBuffer(在本例中为1024)指定的字符数 首先,如果内容长度小于1024个字符,我会得到很多空白字符,我需要使用trim删除它们 其次,更重要的是,我想读取文件的全部内容,即使它超过1024个字符,并将其插入到字符串对象中。我知道我不应该使用.available方法来确定文件中是否有更多数据,因为它不准确或类似的东西 我该怎么做呢 public String getContent( String sFileName )

我正在使用下一种方法从文件中读取内容。这里的问题是,我被限制为
inputBuffer
(在本例中为1024)指定的字符数

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

其次,更重要的是,我想读取文件的全部内容,即使它超过1024个字符,并将其插入到
字符串
对象中。我知道我不应该使用
.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();
}
您可以在分配缓冲区之前读取#/字节:

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

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

hmm。我怎么没有想到这一点呢。是的,保罗,你有什么论据,为什么这个解决方案比我逐行阅读的方案更好或更差?或者任何方法都是好的?嗯,似乎在分配缓冲区时,它不接受新的char[long],只接受char[int]。好吧,这真是一个糟糕的问题:(