read()返回值为-1表示是读到文件的最后了,但当我用该方法读取字节数据时候碰到没有读完文件就结束的问题。怎么样解决用read逐字节读取非文本的问题。File f=new File( "这里如果是非文本,文件有错误,文本文件没有问题 ");
FileInputStream fin=new FileInputStream(f);
while(true)
{
byte b=(byte)(fin.read());
System.out.println (b);
if(b==-1)
{
break;
}
System.out.println(b);
}
FileInputStream fin=new FileInputStream(f);
while(true)
{
byte b=(byte)(fin.read());
System.out.println (b);
if(b==-1)
{
break;
}
System.out.println(b);
}
解决方案 »
- 求java正则表达式去掉xml中多余的空格
- 一个关于cookie的问题
- ★★★JSP项目在eclipse之外无法运行
- java.lang.NoClassDefFoundError: org.hibernate.cfg.Configuration 是什么错误???
- 用 schema 验证 XML 的例子, 高分求救?
- 邮件转发怎么做?用java mail
- struts upload的问题
- 应怎样填写这个oracle的jdbc串?
- 用JDOM处理XML,却出现如下错误,在JB7,如何找org.xml的包呢?急……
- w3c和apache是什么关系呢?
- 进销存管理系统
- SecurityError: Error #2148: 只有仅限于文件系统的 SWF 文件和可信的本地 SWF 文件可以访问本地资源。
import java.io.File;public class FileReader {
public static void main(String[] args)throws Exception{
File f=new File("resources/pdf/pdf1.pdf");//这里可以改为pdf rar exe等文件
long fileLength=f.length();
FileInputStream fin=new FileInputStream(f);
long i=0;
while(i<fileLength)
{
i++;
int b=fin.read();
System.out.println (i);
if(b==-1)
{
System.out.println("------读取到-1标志------");
// break;
} System.out.println(b);
}
System.out.println("文件字节数是"+fileLength+",i值是"+i);
}
}在文本文件的字符编码都不会有-1所以-1只可能在文件流的末尾
如果你要对字节流文件就不要这么一个一个字节做了,还是读取字节流文件的length,用length控制靠谱
这两个方法,在文件里没有数据了,才会返回负一,你那个方法,是每次返回一个字节!
这两个read重载方法,低层也是调用read()方法;
用
int b = fin.read();
试试看。
这两个方法,在文件里没有数据了,才会返回负一,你那个方法,是每次返回一个字节!
这两个read重载方法,低层也是调用read()方法;
System.out.println (b); 这样b当然为-1,但是fin不结束。因为实际上fin.read()返回的是255
for(int i=0;i<Math.pow(10,4);i++){
if((byte)i==-1){
System.out.println(i);
}
}