这个问题着实让我很蛋疼啊,刚开始怎么都不知道,就照着网上的找了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.
谢谢~~~

本文探讨了使用Java进行文件读取的不同方式,并对比了使用byte数组、char数组和BufferedReader的优缺点。特别关注如何避免读取过程中的空白字符问题。
1284

被折叠的 条评论
为什么被折叠?



