A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李能甫 中级黑马   /  2015-3-30 18:11  /  3878 人查看  /  20 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1黑马币
  1. import java.io.FileWriter;
  2. import java.io.IOException;
  3. public class Test {
  4.         public static void main(String[] args) {
  5.                 String str = "Hello World";
  6.                 FileWriter fw = null;
  7.                 try {
  8.                         fw = new FileWriter("c:\\hello.txt");               
  9.                         fw.write(str);                                                               
  10.                 } catch (IOException e) {
  11.                         e.printStackTrace();                                               
  12.                 } finally {
  13.                         fw.close();                                 
  14.                 }
  15.         }
  16. }
复制代码


20 个回复

正序浏览
如果你不是把异常抛给调用者(抛在方法签名)的话,在finally中关闭fw时也是需要try-catch的;而且一般情况下,普通用户是没有对C盘的写入权限的,建议不要直接写在C盘,将文件大量写入系统盘的话,不仅会占用系统盘的空间,而且会影响电脑使用性能。
回复 使用道具 举报
写入流关闭也要捕获异常  大神这么多 菜鸟怎么活。。。
回复 使用道具 举报
用throws 抛出异常类
回复 使用道具 举报
我觉得应该改成这样:  fw = new FileWriter("c:\\hello.txt");         if(fw!=null){ fw.write(str);  }   
f.close的前面也需要加上if(f!=null).而且这部分要加上try块捕获ioexception异常。
                        
回复 使用道具 举报
我来补充一下,就是在写入流关闭的时候需要进行判断,是否为空,并进行try处理,同时需要注意的是两个catch捕获的异常变量虽然都是IOException,但是变量名要不同,否则会出现编译失败
回复 使用道具 举报
调用close()方法,也是要处理异常的,你并没有处理,多以会报异常
回复 使用道具 举报
楼主万岁,万万岁,哈哈哈哈,谢谢了
回复 使用道具 举报
关闭流的方法close(),会抛异常,关闭之前判断一下就ok了。
finally{
      try{
          if(fw!=null)
             fw,close();
           }catch(IOException e)
               System.out.println("关闭流操作失败");
}
回复 使用道具 举报
close()方法处也要进行IoException的Try catch
回复 使用道具 举报
package io;

import java.io.FileWriter;
import java.io.IOException;

public class IoDemo {
        public static void main(String[] args) {
                String str = "Hello World";
                FileWriter fw = null;
                try {
                        fw = new FileWriter("c:\\hello.txt");
                        fw.write(str);
                } catch (IOException e) {
                        e.printStackTrace();
                } finally {
                        try {
                                fw.close();//这里的close会出异常,你要处理,要么抛出去,要么就try
                        } catch (IOException e) {
                                e.printStackTrace();
                        }
                }
        }
}
回复 使用道具 举报

异常没有处理。。处理一下就行了。
回复 使用道具 举报
没有处理(close())产生的异常!! try{}catch{}一下就中了
回复 使用道具 举报
蜡笔 中级黑马 2015-4-11 16:04:27
8#
1、FileWriter调用write()方法后需要刷新一下流里面的数据
2、finally里面的close方法会抛出异常,需要单独try一下
回复 使用道具 举报
Hivan 中级黑马 2015-4-10 21:19:15
7#
你try了IO对象, try中的代码是可能出问题的代码,而你try外面的IO对象是null,所以,colse()可能会找不到对象,就会被Jvm看成错误的代码,所以要继续try,并且,try之前判断一下对象是否存在. 而且,FileWriter 需要flush()方法,如果你不刷新,它写的东西永远在内存中,到不了硬盘.虽然说close()在执行之前会刷新,但这也不是每次结果都一样滴.永远建议手动flush();
回复 使用道具 举报
close()方法会抛异常喔
回复 使用道具 举报
close()时也应该抛出异常!!回答的那么详细如何让小菜鸟得技术分啊
回复 使用道具 举报
楼上回答正确。。。没机会得分了。。。。Filewriter的都会抛出异常,close也是,有几次close就尽量try几次,这样最保险,当然一起嵌套try也没问题
你可以看下毕老师的这个视频你应该有吧--在18天教程08中专门讲了close的问题
_毕向东_Java基础视频教程第18天-08-IO流(IO异常处理方式).avi
http://java.itheima.com/news/2012822/f21877d69403.shtml
这是毕老师学前班的全部视频地址。。。。小白一下。。
回复 使用道具 举报
围观大神回答
回复 使用道具 举报
import java.io.FileWriter;
import java.io.IOException;
class Test {
    public static void main(String[] args) {
        String str = "Hello World";
        FileWriter fw = null;
        try {
            fw = new FileWriter("c:\\hello.txt");               
            fw.write(str);                                                               
        } catch (IOException e) {
            e.printStackTrace();                                                
        } finally {
                        try{
                                if(fw!=null)
                                        fw.close();
                        }catch(IOException e){
                                System.out.println(e.toString());
                        }
        }
    }
}

1.finally里面的close方法也要抛异常
2.win7系统的话,要向c盘里创建东西权限不够,用管理员身份打开cmd就行了。往d盘e盘写就不需要管理员权限



回复 使用道具 举报
  1.     import java.io.FileWriter;
  2.     import java.io.IOException;
  3.     public class Test {
  4.             public static void main(String[] args) {
  5.                     String str = "Hello World";
  6.                     FileWriter fw = null;
  7.                     try {
  8.                             fw = new FileWriter("c:\\hello.txt");               
  9.                             fw.write(str);                                                               
  10. //这里最好刷新下,不刷新数据是出不来的
  11. fw.flush();
  12.                     } catch (IOException e) {
  13.                             e.printStackTrace();                                               
  14.                     } finally {
  15.                             //close方法会抛出异常,这里需要try
  16. try{
  17. fw.close();                                 
  18. }
  19. catch(Exception e){}
  20.                     }
  21.             }
  22.     }
复制代码


回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马