java 编写了一个程序,请各位大哥大姐看看哪里出错了

packageTestAbstract;importjava.io.File;importjava.io.FileReader;importjava.io.FileWri... package TestAbstract;

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.Reader;
import java.io.Writer;
public class Demo{
public void createTempFile(){
File f=new File("D:/a/a.txt");
File f1=new File("E:/a/b.txt");
f.mkdirs();
f1.mkdirs();
}

public static void main(String args[]) throws Exception{
File f1= new File("d:/a") ;
File f2= new File("e:/a") ;
Reader input = null ;
Writer out = null ;
input = new FileReader(f1) ;
out = new FileWriter(f2) ;
char c[] = new char[1024] ;
int temp = 0 ;
int len = 0 ;
while((temp=input.read())!=-1){
out.write(temp) ; //写入b
c[len] = (char)temp ;
len++ ;
}
input.close() ;
out.close() ;
System.out.println("内容为:" + new String(c,0,len)) ;//输出a的内容
}
}

错误提示:
Exception in thread "main" java.io.FileNotFoundException: d:\a (系统找不到指定的文件。)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileReader.<init>(Unknown Source)
at TestAbstract.Demo.main(Demo.java:21)
展开
 我来答
窈窕知沙陀
2011-10-04 · TA获得超过177个赞
知道小有建树答主
回答量:97
采纳率:0%
帮助的人:76.3万
展开全部
package guoqing04;

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;

public class Demo {
public static void createTempFile() {
// 我不知道你的程序的需求,但是我觉得,你应该是想完成一个文件的复制
// 我暂且理解为你是想将D:/a/a.txt文件中得内容复制到E:/a/b.txt中
// 下来我看你的程序有点小问题,我给你修改如下
/*File f = new File("D:/a/a.txt");
File f1 = new File("E:/a/b.txt");
f.mkdirs();
f1.mkdirs();*/
//首先是创建“文件夹”,创建文件夹和文件需要分开
File file1 = new File("D:/a");
File file2 = new File("E:/a");
if(!file1.exists()) {//判断文件夹是否存在
file1.mkdirs();//不存在,就创建一个
}
if(!file2.exists()) {
file2.mkdirs();
}
//下来才开始创建文件
File file11 = new File(file1,"a.txt");
File file21 = new File(file2,"b.txt");
if(!file11.exists()) {//一样先判断是否存在
try {
file11.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
if(!file21.exists()) {//一样先判断是否存在
try {
file21.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}

public static void main(String args[]) throws Exception {
//首相你上面的方法写了,但是根本就没有调用那个方法,写了又有什么意义,我将你的那个方法改成了静态方法了
//什么叫静态方法?就是static修饰的方法,然后在这里调用了上面的方法
createTempFile();
//再给你一个建议,变量名一定要有实际意义,不要写f1、f2
File file1 = new File("d:/a/a.txt");
File file2 = new File("e:/a/b.txt");
Reader input = null;
Writer out = null;
input = new FileReader(file1);
out = new FileWriter(file2);
char c[] = new char[1024];
int temp = 0;
int len = 0;
while ((temp = input.read()) != -1) {
out.write(temp); // 写入b
c[len] = (char) temp;
len++;
}
input.close();
out.close();
System.out.println("内容为:" + new String(c, 0, len));// 输出a的内容
}
//首先,我认为你应该会出现文件拒绝访问的异常,因为你原来运行过你原来的程序的话,会生成一个"a.txt"
//的文件夹!!是文件夹,这样程序会把它当成文件来读,所以程序就会报错。
//所以你需要将你原来的程序生成的问价全部删掉,
//下来就是你程序要完成复制,必须在a.txt中有文件,你在第一次运行程序过后,需要在a.txt里面写
//一些内容,这样才能达到你你程序的效果,程序第二次运行完后你就会发现你的b.txt里面有了a.txt的内容了
//在文件夹、文件的创建前进行文件的是否存在是必要的!!!
//上面可能有错别字哈,还请见谅,希望对你有帮助
}
追问
谢谢你,不知道该说什么好,只知道感谢你,能加我么 734095325
追答
呵呵~~~既然可以,给个采纳吧,谢谢了。。。你可以加447140259
信天炜5W
2011-10-04 · TA获得超过421个赞
知道小有建树答主
回答量:164
采纳率:100%
帮助的人:128万
展开全部
你的main方法里面第一和第二两个语句有错
File()括号中的字符串要写一个文件路径或者是文件夹路径,出错是因为你D盘下面没有a这个文件夹或是文件,你应该是隐藏了文件夹后缀名,所以你那个文件应该就只看到a,你要打开隐藏后缀名这个功能,看看那个文件的后缀是什么。

对于如何打开隐藏文件后缀名的功能,
XP系统:我的电脑菜单栏中的工具----文件夹选项----查看----拉下滚动条就可以看到有一个是写着:隐藏已知文件类型的扩展名,把该复选框不要勾就OK

win7系统:我的电脑-----组织-----文件夹和搜索选项----查看-----拉下滚动条也可以看到那个复选框,不要勾就搞定
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我爱家乡水
2011-10-04 · TA获得超过282个赞
知道小有建树答主
回答量:292
采纳率:0%
帮助的人:68.1万
展开全部
就是没有d:\\a这个文件呗 a必须是个文件不能是文件夹
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
左潇龙
2011-10-04 · TA获得超过470个赞
知道小有建树答主
回答量:344
采纳率:0%
帮助的人:275万
展开全部
你的程序逻辑上就有问题,你现在到底是想把a.txt复制给b.txt 还是想把A的内容读出来? 说清楚噻。 我给你写!
追问
我是想 在D盘内存在一个文件夹 a a内存在一个文本 a.txt  E盘下存在一个文件夹b,b内是空的,现在想把a.txt内的内容拷贝到E盘的B文件夹去,然后读出
追答
public static void main(String[] args) {
FileInputStream fileInputStream = null;
FileOutputStream fileOutputStream = null;
try {
File file = new File("E:/ceshi2/b/b.txt");
if (!file.exists()) {
file.createNewFile();
}
fileInputStream = new FileInputStream(new File("E:/ceshi2/a/a.txt"));
fileOutputStream = new FileOutputStream(file);
byte[] bytes = new byte[1024];
int len = 0;
while ((len = fileInputStream.read(bytes)) > 0) {
fileOutputStream.write(bytes, 0, len);
fileOutputStream.flush();
}
//上面是完成文件的复制,下面是读取b.txt的内容
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(new FileInputStream(file)));
System.out.println(bufferedReader.readLine());
//下面还得各种关闭流,我就不写了。
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

把路径改一下,改成你的路径,就OK了,注意,我这个程序是假设你的a.txt已经存在的。否则会抛FileNotFoundException这个异常的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
china77913312
2011-10-04 · TA获得超过367个赞
知道小有建树答主
回答量:250
采纳率:0%
帮助的人:147万
展开全部
你要不两杠\\ 或者一个反斜杠/ 试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式