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]。好吧,这真是一个糟糕的问题:(