java使用byte数组,通过FileInputStream读取文件时出现的bug
我使用以下代码获取文件内容,文件大概为5.4MFileInputStreamfis=newFileInputStream(Filename);Stringxml="";b...
我使用以下代码获取文件内容,文件大概为5.4M
FileInputStream fis = new FileInputStream(Filename);
String xml = "";
byte[] b = new byte[1024*1024];
while (fis.read(b,0,b.length)!=-1) {
xml += new String(b);
}
当我打印xml或者输出到文件时,发现,xml并没问完全输出,输出断绝的地方,源文件是:
<reporter name="Ma Wenjing">mawj0517@
经上述读取再输出之后,文件最末尾停在:
<reporter name="Ma Wenjing">mawj0
这后面的大概一两百行文件内容也没有输出成功。
请问,是否这是因为mawj0517里面的5这个字服在byte情况下,读进来导致了fis.read(b,0,b.length)!=-1这个条件不满足了而无法继续读下去了吗?请问我应该怎样修改才行呢。
PS:
谢谢一楼的建议,我现在就是使用BufferedReader来读FileReader,然后使用readLine,读5.4M大小的xml文件,时间居然将近1个小时。
我就使用1M为单位的空间通过byte数组来读,几乎一秒不到就读好了,但是读取并不完整。缺了最后的几百行。
另外:我直接使用read(b)也是一样的错误。
请问有没有人能介绍一个不使用readLine的方法快速读取呢。 展开
FileInputStream fis = new FileInputStream(Filename);
String xml = "";
byte[] b = new byte[1024*1024];
while (fis.read(b,0,b.length)!=-1) {
xml += new String(b);
}
当我打印xml或者输出到文件时,发现,xml并没问完全输出,输出断绝的地方,源文件是:
<reporter name="Ma Wenjing">mawj0517@
经上述读取再输出之后,文件最末尾停在:
<reporter name="Ma Wenjing">mawj0
这后面的大概一两百行文件内容也没有输出成功。
请问,是否这是因为mawj0517里面的5这个字服在byte情况下,读进来导致了fis.read(b,0,b.length)!=-1这个条件不满足了而无法继续读下去了吗?请问我应该怎样修改才行呢。
PS:
谢谢一楼的建议,我现在就是使用BufferedReader来读FileReader,然后使用readLine,读5.4M大小的xml文件,时间居然将近1个小时。
我就使用1M为单位的空间通过byte数组来读,几乎一秒不到就读好了,但是读取并不完整。缺了最后的几百行。
另外:我直接使用read(b)也是一样的错误。
请问有没有人能介绍一个不使用readLine的方法快速读取呢。 展开
展开全部
关键是fis.read(b,0,b.length)这句,如果你的总体的内容长度不能整除b.length那么它会把一些空字符串塞满这次b。导致b读取的内容就不对了。
因为FileInputStream这个类的read方法返回的是一个整型值。不好操作
建议你这么写:
BufferedReader br = new BufferedReader(new FileReader("test.txt"));
String xml = "";
StringBuilder total = new StringBuilder("");
byte[] b = new byte[1024];
while ((xml = br.readLine())!=null) {
total.append(xml);
}
因为FileInputStream这个类的read方法返回的是一个整型值。不好操作
建议你这么写:
BufferedReader br = new BufferedReader(new FileReader("test.txt"));
String xml = "";
StringBuilder total = new StringBuilder("");
byte[] b = new byte[1024];
while ((xml = br.readLine())!=null) {
total.append(xml);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我觉得这程序 没有问题啊。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询