黑马程序员技术交流社区

标题: 为什么总是报错,抛出异常 [打印本页]

作者: 白磊    时间: 2013-5-11 20:55
标题: 为什么总是报错,抛出异常
本帖最后由 白磊 于 2013-5-13 12:35 编辑

import java.io.*;

public class A {
        public static void main(String[] args) {
                BufferedReader bufr = null;
                BufferedWriter bufw = null;
                try {
                        bufr = new BufferedReader(new FileReader("D:/workspace/a.txt"));
                        bufw = new BufferedWriter(new FileWriter("D:/workspace/b.txt"));               
                        String line = null;
                        while ((line = bufr.readLine()) != null) {
                                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("写入流关闭失败");
                        }
                }
        }
}



Exception in thread "main" java.lang.RuntimeException: 读写失败
        at A.main(A.java:21)
就是这一句:
catch (IOException e) {
                        throw new RuntimeException("读写失败");

作者: 任江峰    时间: 2013-5-11 21:07
我这里运行没问题。目测位置D:/workspace/a.txt的源文件不存在。
作者: 李志敏    时间: 2013-5-11 21:09
因为没有找到文件吧 a.txt
作者: hou604720966    时间: 2013-5-11 21:12
你看看a和b的文件是否存在
作者: 白磊    时间: 2013-5-11 21:25
任江峰 发表于 2013-5-11 21:07
我这里运行没问题。目测位置D:/workspace/a.txt的源文件不存在。

可是我是有的啊
作者: 白磊    时间: 2013-5-11 21:25
hou604720966 发表于 2013-5-11 21:12
你看看a和b的文件是否存在

是存在的啊
作者: 白磊    时间: 2013-5-11 21:26
李志敏 发表于 2013-5-11 21:09
因为没有找到文件吧 a.txt

有的,所以我也不知道是哪里出错了
作者: 江公亮    时间: 2013-5-11 21:31
应该是没有 a.txt,如果是输入流的话,一定要指定到特定的文件,如果是输出流的话,会先先判断文件是否
存在,如果不存在,就会自行创建的。
  1. FileOutputStream out =new FileOutputStream(new File("F:\\javaCode\\Files\\test.txt"));
复制代码
其中的test.txt,就不必存在Files下。
作者: hou604720966    时间: 2013-5-11 21:32
白磊 发表于 2013-5-11 21:25
是存在的啊

在这个异常throw new RuntimeException("读写失败");  前或后 增加e.printStackTrace();
看看输出的异常是什么了
作者: 小陈期待逆袭    时间: 2013-5-11 21:37
是不是文件路径那里,由于转义字符的关系,要写两个反斜线!!!
作者: 白磊    时间: 2013-5-11 21:52
hou604720966 发表于 2013-5-11 21:32
在这个异常throw new RuntimeException("读写失败");  前或后 增加e.printStackTrace();
看看输出的异常是 ...

a.txt和b.txt明明都是有的啊    可是还这报这样的错

java.io.FileNotFoundException: D:\a.txt (系统找不到指定的文件。)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(Unknown Source)
        at java.io.FileInputStream.<init>(Unknown Source)
        at java.io.FileReader.<init>(Unknown Source)
        at A.main(A.java:8)
Exception in thread "main" java.lang.RuntimeException: 读写失败
        at A.main(A.java:18)

作者: 杨修    时间: 2013-5-11 21:53
1,看看文件路径是不是出错了,看看你的txt文件放在当前文件下。
2,用flag标记输出看有没有读写成功。
作者: hou604720966    时间: 2013-5-11 21:55
白磊 发表于 2013-5-11 21:52
a.txt和b.txt明明都是有的啊    可是还这报这样的错

java.io.FileNotFoundException: D:\a.txt (系统找 ...
问题找到了,你自己解决吧。
给你个建议:向异常你最好是打印出来,因为它能帮你更快的找到是什么原因引发的错,这样你解决就更快了,还有就是学会调试, 调试代码是非常重要的
作者: 仲伟    时间: 2013-5-11 22:10
import java.io.*;

public class A {
         public static void main(String[] args) throws Exception {
                 BufferedReader bufr = null;
                 BufferedWriter bufw = null;
                         bufr = new BufferedReader(new FileReader("D:/workspace/a.txt"));
                         bufw = new BufferedWriter(new FileWriter("D:/workspace/b.txt"));               
                        String line = null;
                         while ((line = bufr.readLine()) != null) {
                                 bufw.write(line);
                                 bufw.newLine();// 换行
                                 bufw.flush();// 刷新缓冲区。
                         }
                 
         }
}
如果简单小程序不用处理exception,给你提示就行了啊throws就行
作者: 花开花落总相似    时间: 2013-5-11 22:47
      bufr = new BufferedReader(new FileReader("D:/workspace/a.txt"));     //这里加两个反斜杠试试  转义字符D://workspace/a.txt
                        bufw = new BufferedWriter(new FileWriter("D:/workspace/b.txt"));             //D:/workspace/b.txt
  转义字符
作者: 飞鸟青崖    时间: 2013-5-12 12:30
既然找不到异常,那就把异常信息打印出来吧。这样才能找到问题。
你可以把 throw new RuntimeException("读写失败");中的“”删除,再运行一次看看是哪的问题。
作者: Sword    时间: 2013-5-13 11:09
如果问题未解决,请继续追问,如果问题解决了,请点击你的帖子下面的"编辑"重新编辑帖子,将分类改为“已解决”,谢谢合作!




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