我正在使用下一个方法来读取文件中的内容。这里的问题是我只限于为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();
}
答案 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));
另一种解决方案是将输入读取为字符串,一次读取一行。