//The Java Developers Almanac 1.4 上的两个小例子
//我调试的结果跟书上的有些出入
//达人帮忙看看啊,谢谢了File file1 = new File("a.html");
File file2 = new File("./a.html");
System.out.println (file2.exists());
//System.out.println (file1.equals(file2));
file1.getCanonicalFile();
file2.getCanonicalFile();
System.out.println (file1.equals(file2)); 
//?? the book said it's true,but result is false  
//书上说 返回结果应该相同,可是我运行程序返回的却false,
//为什么呢?File file1 = new File("test.java");
File file2 = new File("testfile.java");
System.out.println (file2.renameTo(file1)); 
//?return true ,but file name didn't change !
//返回值为真,应该是问件名已经改了
//可我到文件夹里看了,文件名没有改变啊?
//为什么呢?

解决方案 »

  1.   

    1 如果返回false,说明你的a.html路径不对。
    2 如果返回true,应该是把testfile.java 改为test.java了, 你说得情况很奇怪。
      

  2.   

    第二个我明白了,是路径的问题
    可是第一个还是不懂,
    ./ 指的 应该就是当前目录 
    可输出结果还是 false
     file2.getCanonicalFile() 这个函数 到底是作什么用的?
    请高手指点一下:)
      

  3.   

    getCanonicalFile()是显示全部规范化的文件名,包括路径信息,返回仍然是File类型
    import java.io.File;
    import java.io.IOException;
    public class File1Lence {
    public static void main(String[] args) throws IOException {
    File file1 = new File("a.html");
                    System.out.println(file1);    //结果a.htm
    File file2 = new File("./a.html");  
                    System.out.println(file2);    //结果.\a.html
    System.out.println (file2.exists());
    //System.out.println (file1.equals(file2));
    System.out.println(file1.getCanonicalFile());
    System.out.println(file2.getCanonicalFile());
    System.out.println (file1.equals(file2));   //所以这个为false;
                    System.out.println 
    (file1.getCanonicalFile().equals(file2.getCanonicalFile()));  //规范化后即为true
    }
    }
      

  4.   

    file1.getCanonicalFile()  有个返回值 要用.