日期:2014-05-20  浏览次数:20846 次

InputStream的read方法
import java.io.*;
public class InputStream {

public static void main(String[] args) throws Exception 
{
byte [] b = "abc1dsa".getBytes();
FileOutputStream out = new FileOutputStream("text1.txt");
out.write(b);
out.close();

/*byte buf[] = new byte[1024];
File f = new File("FileSteam.txt");
FileInputStream in = new FileInputStream(f);
in.read(buf);
System.out.println(new String(buf,0,buf.length));*/

File f = new File("text1.txt");
FileInputStream in = new FileInputStream(f);
while((in.read())!=-1);//while(ch!=-1); //这里错了
System.out.println(in.read());
in.close();
}

}

这个程序打印的是-1 我知道是while循环的in.read方法出错了 难道不是读一个字符吗


------解决方案--------------------
每次是读一个字节的,但是你打印语句并不在while循环里面呀,你while后面跟了一个分号,相当于一个空循环体,读完所有数据后又打印的
------解决方案--------------------
while((in.read())!=-1);//while(ch!=-1); //这里错了 

while后边用的是分号,你的循环已经结束了,在读出来的当然是-1了
------解决方案--------------------
探讨
每次是读一个字节的,但是你打印语句并不在while循环里面呀,你while后面跟了一个分号,相当于一个空循环体,读完所有数据后又打印的

------解决方案--------------------
探讨
每次是读一个字节的,但是你打印语句并不在while循环里面呀,你while后面跟了一个分号,相当于一个空循环体,读完所有数据后又打印的