java中while((c=source.read())!=-1)什么意思

来源:百度知道 编辑:UC知道 时间:2024/06/11 05:24:18
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileIOStreamDemo {
public static void main(String[] args){
String source="Hello Java'sI/O Stream";
byte[]arrSource=source.getBytes();
byte[]arrTarget=new byte[arrSource.length];
File f=new File("c: /tmp.txt");
try{
f.createNewFile();
FileInputStream fin=new FileInputStream(f);
FileOutputStream fout=new FileOutputStream(f);
for(int i=0;i<arrSource.length;i++){
fout.write(arrSource[i]);
}
fout.close();
fin.read(arrTarget);
fin.close();
for(int j=0;j<arrTarget.length;j++){
System.out.print((char)arrTarget[j]);
}
}
catch(IOException e){
e.printStackTrace();
}}

while((c=source.read())!=-1)

哈哈,简化代码就是让人看不懂啊,

source.read()是读取文件下一行,当然这个有返回值,如果这个返回值不等于-1呢,就表示文件还有下一行,就是没到结尾,而c=source.read()就是把这个返回值赋给了C,下面会用到C

while((c=source.read())!=-1)
首先把source.read()读到的数据赋值给C如果c的值不等于-1循环继续,也就是source中还有数据,否则到达结尾了就不在循环了。然后在循环体中可能要用到读的数据c

source.read()是读取下一行,有返回值,如果返回值不等于-1,就是文件还有下一行,没到结尾,而c=source.read()就是把这个返回值赋给了变量C,后面会用到这个变量的

根据你这个代码 =-1 意思就是字符串已到达流末尾而没有可用的字节,JAVA这时候会返回-1值, !=-1 就是有字节,就读取它

你提到的“source”一般是输入流,read()方法是读取一个字节,“-1”表示没有内容了,一般是用来读取输入流的数据,没有读完就一直读,循环内一般需要把读取的内容“c”全部保存,一直到“c==-1”表示读完了,结束循环。