黑马程序员技术交流社区
标题:
大家看看这个IO代码,为什么我运行的是抛出异常?
[打印本页]
作者:
方江
时间:
2012-4-17 03:06
标题:
大家看看这个IO代码,为什么我运行的是抛出异常?
也就是18天那个代码,为什么我运行的抛出异常,而不是我需要的结果呀。
哦米豆腐。帮我的都是好人,好基友,好丽友。
代码如下:
/*
需求,从C盘拷贝一个文件到D盘
1:在D盘创建一个文件。用于储存C盘文件中的数据
2:定义读取流和C盘文件关联
3:通过不断的读写完成数据的存数
4:关闭资源。
*/
import java.io.*;
class CopyText
{
public static void main(String[] args)
{
copy();
}
public static void copy()
{
FileWriter fw = null;
FileReader fr= null;
try
{
fw=new FileWriter("DateDemo_copy.txt");
fr=new FileReader("DetaDemo.java");
char[] buf= new char[1024];
int len=0;
while((len=fr.read(buf))!=-1)
{
fw.write(buf,0,len);
}
}
catch (IOException e)
{
throw new RuntimeException("读写失败");
}
finally
{
try
{
if(fr!=null)
fr.close();
}
catch (IOException e)
{
}
try
{
if(fw!=null)
fw.close();
}
catch (IOException e)
{
}
}
}
}
作者:
liuyang
时间:
2012-4-17 07:16
代码没错,主要是文件路径问题,如果你直接用命令行编译运行没问题,如果你是放在Eclipse中运行的话,你试试绝对路径就行了。
作者:
伊文龙
时间:
2012-4-17 08:23
我先给你提个人意见吧
1. 你没有理解清题目的要求,题目要你从C盘拷贝文件到D盘,你的路径上都体现不出这两个盘符
2. 我觉得你的异常处理方式不行,第一次异常catch以后你抛出一个“文件读取失败”,你自己在修改程序的时候你自己怎么根据这个“文件读取失败”这一条信息来找你程序的错误???这句话我觉得应该是打印给客户看的,但个人认为现在学习阶段没必要这样处理。还有你后面,catch住异常然后就没然后了......然后出问题肯定找不出来。我建议吧,出了异常先打印出来,然后有问题你就知道去哪儿找了。
作者:
黑马-刘昌文
时间:
2012-4-17 08:31
fw=new FileWriter("DateDemo_copy.txt");
fr=new FileReader("DetaDemo.java");
按照你的描述 ,可能是关联的文件名 写错了,fw=newFileWriter("D:DateDemo_copy.txt")
fr=new FileReader("C:DetaDemo.java");
还要看你的C盘里有没有DetaDemo.java这个文件。么有的话也是会抛异常的
作者:
伊文龙
时间:
2012-4-17 08:33
import java.io.*;
class CopyText
{
public static void main(String[] args)
{
copy();
}
public static void copy()
{
FileWriter fw = null;
FileReader fr= null;
try
{
File file = new File("E:\\DateDemo_copy.txt");
file.createNewFile();
fw=new FileWriter(file);
fr=new FileReader("DetaDemo.java");
char[] buf= new char[1024];
int len=0;
while((len=fr.read(buf))!=-1)
{
fw.write(buf,0,len);
}
} catch (IOException e)
{
System.out.println(e);
} finally
{
try
{
if(fr!=null)
fr.close();
}
catch (IOException e){}
try
{
if(fw!=null)
fw.close();
}catch (IOException e){}
}
}
}
复制代码
对于绝对路径和相对路径的问题,我刚刚做了个实验
首先,使用绝对路径肯定是没有问题的。
java程序在执行的时候遇到相对路径的时候,它会找class文件所在的目录,如果找不到,就会抛出FileNoFoundException.
如果是在Eclipse下开发,相对路径应该是bin目录,而不是src目录
作者:
马东华
时间:
2012-4-17 08:51
对啊,我看了一下,你的程序,文件路径错了。而且,为什么不用缓冲流啊,对取快,也方便啊。
作者:
韩新凯
时间:
2012-4-17 12:26
//读取整个数组,然后把整个数组复制到D盘。
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CopyTest2 {
public static void main(String[] args) {
FileWriter fw = null;
FileReader fr = null;
try {
fw = new FileWriter("D:\\WaterPress.txt");
fr = new FileReader("C:\\WaterPress.txt");
int num = 0;
char[] buf = new char[1024];
while ((num = fr.read(buf)) != -1) {
fw.write(buf, 0, num);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
fr.close();
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
用决定路径试试。(系统找不到指定的文件。)
作者:
方江
时间:
2012-4-17 17:04
大哥大姐们。我路径是在默认目录下运行的,而且路径下面有DateDemo.java这个文件。
第二个。别人说我抛出的异常有问题,这是在18天最后面那个练习题里面的,老毕是这样抛得,如果还有高深的抛法。我没学到啊,亲。
我回去再看下,希望是路径问题,可能没有class这个文件,但DateDemo和DateDemo_Copy.txt这个文件是肯定有的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2