这个问题着实让我很蛋疼啊,刚开始怎么都不知道,就照着网上的找了java读操作的实例,他是这样读的
File file=new File(path);
if(!file.exists()||file.isDirectory())
throw new FileNotFoundException();
FileInputStream fis=new FileInputStream(file);
byte[] buf = new byte[1024];
StringBuffer sb=new StringBuffer();
while((fis.read(buf))!=-1){
sb.append(new String(buf));
buf=new byte[1024];//重新生成,避免和上次读取的数据重复
}
return sb.toString();
当然还有这样的
FileInputStream fis = openFileInput("province");
InputStreamReader isr = new InputStreamReader(fis);
char[] buffer = new char[100];
while(isr.read(buffer) > 0){
blacklistString += String.copyValueOf(buffer);
}
isr.close();
这两种方法都是可以读出来的,但是仔细你就会发现,因为定义的是byte[] buf = new byte[1024];
或者是
char[] buffer = new char[100];
这样的话就会发生最后一个byte数组或者char数组是未满的,也就后面全是'\0',问题所在,接着就是发生String变量的最后字符是很多个'\0',下图为证:
清楚明了~~~~~~~~~~
这是需要注意的地方
所以有另外一种读的方式
//利用BufferedReader读取
//在IO操作,利用BufferedReader和BufferedWriter效率会更高一点
public String BufferedReaderDemo(String path) throws IOException...{
File file=new File(path);
if(!file.exists()||file.isDirectory())
throw new FileNotFoundException();
BufferedReader br=new BufferedReader(new FileReader(file));
String temp=null;
StringBuffer sb=new StringBuffer();
temp=br.readLine();
while(temp!=null)...{
sb.append(temp+" ");
temp=br.readLine();
}
return sb.toString();
}
看看
Returns the next line of text available from this reader. A line is represented by zero or more characters followed by '\n'
, '\r'
, "\r\n"
or
the end of the reader. The string does not include the newline sequence.
谢谢~~~