代码如下:URL url = Test.class.getResource("test.txt");
File file = new File(url.getFile());
System.out.println(file.lastModified());
不知道为什么怎么修改test.txt返回永远是0,也就是GMT的起始时间

解决方案 »

  1.   

    你去看看URL这个类是做什么。它是在java.net包下的。你想获得文件直接用File操作就够了,怎会想到URL上去?
      

  2.   

    URL url = Test.class.getResource("test.txt");
    这不是多此一举吗
      

  3.   

    URL url = Test.class.getResource("test.txt");
    这个字符串所对应的文件肯定不存在,那么file 就成了new file了。自然就是0了。
      

  4.   

    lastModified
    public long lastModified()返回此抽象路径名表示的文件最后一次被修改的时间。 返回:
    表示文件最后一次被修改的时间的 long 值,用与时间点(1970 年 1 月 1 日,00:00:00 GMT)之间的毫秒数表示;如果该文件不存在,或者发生 I/O 错误,则返回 0L text.txt 文件不存在,所以返回0
      

  5.   

    API上的原话:
    java.net 类 URL类 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。
      

  6.   


    用这个有什么问题吗,主要为了获取test.txt的路径阿
    url.getFile()返回的结果是一个字符串阿,也就是test.txt的绝对路径。然后用new File阿。上面的代码实际上不就等于下面的吗String path = "test.txt的绝对路径";
    File file = new File(path);
    System.out.println(file.lastModified());这样跟java.net.URL有什么关系吗
      

  7.   


    这个文件肯定存在的,我都修改了好几次了。我在test.txt删掉,代码就报异常了。
      

  8.   


    这个我也是试了很久才用这个办法的,因为Test.class跟test.txt在同一个包里,要获取test.txt的File对象
    得有文件系统的绝对路径才行,而又不想把绝对路径写到程序里。有什么别的方法吗,请指教?
      

  9.   

        肯定是文件不存在的原因。问题在于url.getFile()返回的字符串看视类型绝对路径,实际在在最前面多了个/并且是经过EnCode。试一下下面的代码:public static void main(String[] args) throws Exception {
    // TODO Auto-generated method stub

    URL url = Test.class.getResource("test.txt");

    String fpath = url.getFile().substring(1, url.getFile().length());
    fpath = URLDecoder.decode(fpath,"UTF-8");

    File file = new File(fpath);

    Date date = new Date(file.lastModified());
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    System.out.println(sdf.format(date));
    }
    看到楼上几位纠结于java.net.URL,想起一句话:程序员经常会感觉到莫些代码有问题而死缠不放,从而忽略了问题本身