黑马程序员技术交流社区

标题: IO流(拷贝文件) [打印本页]

作者: 赵志勇    时间: 2012-5-8 22:09
标题: IO流(拷贝文件)
今天看到拷贝文件这个视频,有个问题至今没有调试成功。
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:29
我觉得应该是在类文件路径或者classpath路径下。
作者: 褚代江    时间: 2012-5-8 22:30
本帖最后由 褚代江 于 2012-5-8 22:31 编辑

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

作者: 张小锋    时间: 2012-5-8 22:36
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());
作者: 林豪    时间: 2012-5-8 22:43
你的 FileWriter fw=new FileWriter ("Runtim.txt");
Runtim写错了可能
作者: 徐然    时间: 2012-5-8 23:03
不是的,你太纠结他写的需求,他写的C盘D盘,只是需求,而写的代码是相对路径,只是方便于讲拷贝文件的原理,
你要注意他写的是都是相对路径,那么就代表这两个文件都是在当前目录下
不信可以再仔细看看,他在运行时打开的那个类文件所在的文件夹,在这个文件夹中,就有RuntimeDemo.java这个文件
作者: 张晨    时间: 2012-5-8 23:16
相对路径是可以找到文件的,也就是说和xxx.class一个文件夹,那个文件是可以被jvm找到的,还有绝对路径当然也找得到
作者: 赵志勇    时间: 2012-5-9 07:48
求技术分。:'(
作者: 赵志勇    时间: 2012-5-9 07:52
张小锋 发表于 2012-5-8 22:36
FileWriter fw=new FileWriter ("Runtim.txt");
  FileReader fr=new FileReader("demo.java");
此处如果没 ...

明白了,谢谢
作者: 彩虹    时间: 2012-5-9 10:00
本帖最后由 万章云 于 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




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