按URL获取文件属性

时间:2015-07-22 08:33:27

标签: java file dropbox

我的Dropbox存储空间中有一个文件。如何使用URL获取创建时间等属性?这甚至可能吗? 我的努力:

 public static void main(String[] args) throws IOException, InterruptedException, URISyntaxException {
        URL url=new URL("http://www.dropbox.com/s/pumsh8ns1nvprb9/kazan.zip?dl=1");
        File file = new File(url.getPath());
        Path path = file.toPath();
        BasicFileAttributes attr = Files.readAttributes(path, BasicFileAttributes.class);
        System.out.println("creationTime: " + attr.creationTime());
        System.out.println("lastAccessTime: " + attr.lastAccessTime());
        System.out.println("lastModifiedTime: " + attr.lastModifiedTime());

    }

控制台说:

  

线程“main”中的异常java.nio.file.NoSuchFileException:   \ S \ pumsh8ns1nvprb9 \ kazan.zip

2 个答案:

答案 0 :(得分:1)

我认为你误解了File类。它必须引用文件或目录。

虽然您可以使用URI创建新的File对象,但协议(如javadoc所说http://docs.oracle.com/javase/7/docs/api/java/io/File.html#File(java.net.URI))必须是 file:,而不是 http ,所以我不确定你是否能够以这种方式阅读文件的属性。

可能是您应该将文件下载到临时文件( File.createTempFile deleteOnExit()),然后读取属性。

另一个解决方案是使用Dropbox API(https://www.dropbox.com/developers/core/docs#metadata)。

或其Java API(https://github.com/dropbox/dropbox-sdk-java):http://dropbox.github.io/dropbox-sdk-java/api-docs/v1.7.x/com/dropbox/core/DbxClient.html#getMetadata%28java.lang.String%29

答案 1 :(得分:0)

您可以使用apache commons-io,只需一行代码:

FileUtils.copyURLToFile(URL, File)