【问题标题】:Why can't I create a File instance with this URI?为什么我不能用这个 URI 创建一个 File 实例?
【发布时间】:2015-05-18 15:10:16
【问题描述】:

有没有人知道为什么这个演员阵容不好:

URI myUri = URI.create("http://storage.googleapis.com/autoplay_audio/titanium.mp3");
File f = new File(myUri);

【问题讨论】:

  • 你遇到了什么错误?
  • 仅供参考:您所做的不是投射。您正在创建一个URI 实例,然后将其传递给File. 的构造函数,铸造看起来像File f = (File) myUri;,这将不起作用。

标签: java file uri mp3


【解决方案1】:

您不能使用文件 uri 以外的任何内容(例如 file://)。

构造函数File(URI)有以下条件检查:

String scheme = uri.getScheme();
if ((scheme == null) || !scheme.equalsIgnoreCase("file"))
        throw new IllegalArgumentException("URI scheme is not \"file\"");

如果您打算连接到 http uri,则需要使用其他机制,例如 URL

【讨论】:

    【解决方案2】:

    您只能将 File 用于文件。为了使您的示例正常工作, File 需要了解 HTTP 协议。您应该根据需要和环境使用Apache HttpClient 或其他一些框架。

    【讨论】:

    • 我做这一切的原因是因为我想获取音频的持续时间,我找到了一个函数,它可以返回 Java 文件格式的音频文件的持续时间。你建议我如何做到最好?
    • 您可以使用 HttpClient 下载文件,例如 here 所述。然后你可以将该文件传递给需要它的库。
    • 该文件位于 Google App Engine 服务器中。有没有办法在不下载文件的情况下获取文件持续时间?
    猜你喜欢
    • 2011-11-21
    • 1970-01-01
    • 2019-04-07
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多