黑马程序员技术交流社区

标题: javaIO,求大神帮我看看哪里出错了? [打印本页]

作者: 李能甫    时间: 2015-3-30 18:11
标题: javaIO,求大神帮我看看哪里出错了?
  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. }
复制代码



作者: H马凯    时间: 2015-3-30 18:11
  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.     }
复制代码



作者: 树小森    时间: 2015-3-30 18:38
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盘写就不需要管理员权限




作者: flowerdance    时间: 2015-4-1 10:41
围观大神回答
作者: 百谈千语    时间: 2015-4-1 19:51
楼上回答正确。。。没机会得分了。。。。Filewriter的都会抛出异常,close也是,有几次close就尽量try几次,这样最保险,当然一起嵌套try也没问题
你可以看下毕老师的这个视频你应该有吧--在18天教程08中专门讲了close的问题
_毕向东_Java基础视频教程第18天-08-IO流(IO异常处理方式).avi
http://java.itheima.com/news/2012822/f21877d69403.shtml
这是毕老师学前班的全部视频地址。。。。小白一下。。
作者: 笔墨痕干    时间: 2015-4-2 20:24
close()时也应该抛出异常!!回答的那么详细如何让小菜鸟得技术分啊
作者: 悟败者    时间: 2015-4-9 07:50
close()方法会抛异常喔
作者: Hivan    时间: 2015-4-10 21:19
你try了IO对象, try中的代码是可能出问题的代码,而你try外面的IO对象是null,所以,colse()可能会找不到对象,就会被Jvm看成错误的代码,所以要继续try,并且,try之前判断一下对象是否存在. 而且,FileWriter 需要flush()方法,如果你不刷新,它写的东西永远在内存中,到不了硬盘.虽然说close()在执行之前会刷新,但这也不是每次结果都一样滴.永远建议手动flush();
作者: 蜡笔    时间: 2015-4-11 16:04
1、FileWriter调用write()方法后需要刷新一下流里面的数据
2、finally里面的close方法会抛出异常,需要单独try一下
作者: 不想拥有太多情    时间: 2015-4-14 09:58
没有处理(close())产生的异常!! try{}catch{}一下就中了
作者: Struggle_168    时间: 2015-4-15 11:43

异常没有处理。。处理一下就行了。
作者: 孙振祥    时间: 2015-4-15 20:45
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();
                        }
                }
        }
}

作者: 李维、、    时间: 2015-4-16 13:48
close()方法处也要进行IoException的Try catch
作者: babadan    时间: 2015-4-20 18:28
关闭流的方法close(),会抛异常,关闭之前判断一下就ok了。
finally{
      try{
          if(fw!=null)
             fw,close();
           }catch(IOException e)
               System.out.println("关闭流操作失败");
}
作者: itheima_llt    时间: 2015-4-22 00:14
楼主万岁,万万岁,哈哈哈哈,谢谢了
作者: dengxing    时间: 2015-4-22 21:14
调用close()方法,也是要处理异常的,你并没有处理,多以会报异常
作者: lhwinner    时间: 2015-4-23 10:17
我来补充一下,就是在写入流关闭的时候需要进行判断,是否为空,并进行try处理,同时需要注意的是两个catch捕获的异常变量虽然都是IOException,但是变量名要不同,否则会出现编译失败
作者: 裴健华    时间: 2015-4-30 17:30
我觉得应该改成这样:  fw = new FileWriter("c:\\hello.txt");         if(fw!=null){ fw.write(str);  }   
f.close的前面也需要加上if(f!=null).而且这部分要加上try块捕获ioexception异常。
                        
作者: 陈国安    时间: 2015-5-5 16:47
用throws 抛出异常类

作者: 半世心修    时间: 2015-5-15 11:57
写入流关闭也要捕获异常  大神这么多 菜鸟怎么活。。。
作者: dawndaybreak    时间: 2015-5-28 22:48
如果你不是把异常抛给调用者(抛在方法签名)的话,在finally中关闭fw时也是需要try-catch的;而且一般情况下,普通用户是没有对C盘的写入权限的,建议不要直接写在C盘,将文件大量写入系统盘的话,不仅会占用系统盘的空间,而且会影响电脑使用性能。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2