黑马程序员技术交流社区
标题:
IO流中的小细节
[打印本页]
作者:
谜燕
时间:
2014-3-16 22:32
标题:
IO流中的小细节
import java.io.*;
class CopyTextByBuf
{
public static void main(String[] args)
{
BufferedReader bufr = null;
BufferedWriter bufw = null;
try
{
bufr = new BufferedReader(new FileReader("BufferedWriterDemo.java"));
bufw = new BufferedWriter(new FileWriter("bufWriter_Copy.txt"));
//String line = null;
while((String line=bufr.readLine())!=null)//就是这个String类型
{
bufw.write(line);
bufw.newLine();
bufw.flush();
}
}
catch (IOException e)
{
throw new RuntimeException("读写失败");
}
finally
{
try
{
if(bufr!=null)
bufr.close();
}
catch (IOException e)
{
throw new RuntimeException("读取关闭失败");
}
try
{
if(bufw!=null)
bufw.close();
}
catch (IOException e)
{
throw new RuntimeException("写入关闭失败");
}
}
}
}
复制代码
为什么那个String类型不能加入到while循环中
作者:
往事如烟
时间:
2014-3-17 22:51
String line=bufr.readLine(); 这个是声明变量一条语句,而不是一个能用来做判断值。
(line=bufr.readLine()) !=null;而这个是一个运算语句while才能判断,
作者:
darkpiece
时间:
2014-3-17 23:22
readline()方法返回一个string类型的值 while(( line=bufr.readLine())!=null)是在做判断告诉你返回值不为空,
前面可以写 String line;while(( line=bufr.readLine())!=null){bufw.write(line);}
作者:
王竞
时间:
2014-3-17 23:30
你先要理解while循环的条件,条件的意思是当读取到一行的内容不为空的时候才执行循环体,关键不在于这个String类型上,你可以写为
1、
String line = null;
while((line=bufr.readLine())!=null)//就是这个String类型
{
bufw.write(line);
bufw.newLine();
bufw.flush();
}
2:
String line = null;
while((String line=bufr.readLine())!=null)//就是这个String类型
{
String str = line;//当然这种做法可是大费周章了
bufw.write(str);
bufw.newLine();
bufw.flush();
}
作者:
Alexander
时间:
2014-3-18 11:45
while((String line=br.readLine()) != null)
因为while(boolean)循环里面判断的是boolean类型变量,能赋值操作,但不能定义变量。最终要进行true,false判断,赋值只是将br.readLine()返的值赋给line然后拿line来做判断,这样不会改变判断的结果,
但是如果定义变量,你想,将返回的值赋值给定义的String类型的line变量,这明显说不过去
所以,变量要在while循环之前定义好,里面直接赋值就行了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2