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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵志勇 中级黑马   /  2012-5-8 22:09  /  2529 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天看到拷贝文件这个视频,有个问题至今没有调试成功。
import java.io.*;
class CopyText
{
public static void main(String[] args) throws IOException
{
  copy_1();
}
public static void copy_1()throws IOException
{
  //创建目的地。
  FileWriter fw = new FileWriter("RuntimeDemo_copy.txt");

  //与已有文件关联。
  FileReader fr = new FileReader("RuntimeDemo.java");

  int ch = 0;
  while((ch=fr.read())!=-1)
  {
   fw.write(ch);
  }上边就毕老师的代码。

  
  fw.close();
  fr.close();
}上边就毕老师的代码。下边是我自己写的。
import java.io.*;
class CopyTest
{

public static void main(String[] args) throws IOException
  {copy_1();
}
public static void copy_1()throws IOException
{
  FileWriter fw=new FileWriter ("Runtim.txt");
  FileReader fr=new FileReader("demo.java");
  int ch=0;
  while ((ch=fr.read())!=-1)
  {
   fw.write(ch);
  }
  fw.close();
  fr.close();
}  
}
我想问一下毕老师的代码 FileReader fr = new FileReader("RuntimeDemo.java");中的 RuntimeDemo.java的文件是在c盘根目录吗?
而我的FileReader fr=new FileReader("Runtime.java");中demo.java在c盘根目录,为什么还不能运行通过呢?注:编译已经通过。求细心人给看看到底问题出在哪里啦。



点评

相对路径下···  发表于 2012-5-8 22:56

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

9 个回复

倒序浏览
我觉得应该是在类文件路径或者classpath路径下。
回复 使用道具 举报
本帖最后由 褚代江 于 2012-5-8 22:31 编辑

代码没错的,FileReader fr = new FileReader("RuntimeDemo.java");对于这个文件地址,你可以使用绝对路径("c:\\RuntimeDemo.java"),再看看这样就不会报错了,但是在c盘下必须要有这个文件RuntimeDemo.java,生成的文件Runtim.txt会保存到你的当前目录。也就是你的java源文件那里

点评

明白了,谢谢  发表于 2012-5-9 07:55

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
FileWriter fw=new FileWriter ("Runtim.txt");
  FileReader fr=new FileReader("demo.java");
此处如果没有使用绝对路径,则编译器会自动默认此文件在当前项目的目录下面,例如如果你的java project 名:JP,这就在JP文件夹目录下,
你可以使用下面代码检验:
        File f=new File("a.txt");
        f.createNewFile();
        System.out.println(f.getAbsolutePath());

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
你的 FileWriter fw=new FileWriter ("Runtim.txt");
Runtim写错了可能
回复 使用道具 举报
不是的,你太纠结他写的需求,他写的C盘D盘,只是需求,而写的代码是相对路径,只是方便于讲拷贝文件的原理,
你要注意他写的是都是相对路径,那么就代表这两个文件都是在当前目录下
不信可以再仔细看看,他在运行时打开的那个类文件所在的文件夹,在这个文件夹中,就有RuntimeDemo.java这个文件
回复 使用道具 举报
张晨 黑马帝 2012-5-8 23:16:27
7#
相对路径是可以找到文件的,也就是说和xxx.class一个文件夹,那个文件是可以被jvm找到的,还有绝对路径当然也找得到
回复 使用道具 举报
求技术分。:'(
回复 使用道具 举报
张小锋 发表于 2012-5-8 22:36
FileWriter fw=new FileWriter ("Runtim.txt");
  FileReader fr=new FileReader("demo.java");
此处如果没 ...

明白了,谢谢
回复 使用道具 举报
本帖最后由 万章云 于 2012-5-9 10:03 编辑

  FileWriter fw=new FileWriter ("Runtim.txt");
  FileReader fr=new FileReader("demo.java");
问题出在1. demo.java文件是否存在
            2. 如果demo.java文件存在,则看它的路径是否写错,如果demo.java文件与要编译的源文件在同级目录下,则直接写成  FileReader fr=new FileReader("demo.java");  否则,demo.java的路径要写成绝对路径的形式,如:c: \\ ..\\demo.java
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马