使用 Java 确定 Internet 上的文件大小

javaobject oriented programmingprogramming更新于 2024/8/17 10:55:00

确定 Internet 上的文件大小似乎有点棘手,但这是一项非常简单且容易的任务。Java 提供了一些可用于给定任务的内置功能。在本文中,我们将讨论如何连接到 Internet 并获取给定文件的大小。

如何使用 Java 在 Internet 上建立连接

URL

现代 Internet 就是万维网。Tim Berners-Lee 发明了一种在 Web 上定位所有资源的方法,他将其命名为统一资源定位器。它提供了在 Internet 上明确识别资源的功能。 URL 有四个组成部分 -

  • 协议

  • 主机名或 IP 地址

  • 端口号

  • 路径

Java 网络的 URL 类用于通过 URL 建立连接或定位 Internet 上的资源。此类抛出 MalformedURLException。

语法

URL nameOfObject = new URL( "URLspecifier" );

其中,

URLspecifier 是实际的 URL,或者我们可以说是资源的链接。它必须用双引号括起来。

要访问 URL 的内容信息,我们需要使用"URL"类的内置方法"openConnection()"定义"URLConnection"类的对象。

URLConnection

它是一个用于访问指定资源(即 Internet 上的 URL)信息的类。首先,它在检索 URL 之前检查其属性。为了检索有关指定资源大小的信息,它定义了一个名为"getContentLengthLong()"的方法。它与"URLConnection"类的对象一起使用。

用于检查 Internet 上文件大小的 Java 程序

需要遵循的步骤

  • 首先,定义 URL 类的对象以及给定文件的链接。

  • 使用"URL"类的对象创建"URLConnection"类的对象。

  • 使用"getContentLengthLong()"检索文件大小并将其存储在名为"fileSize"的 long 类型的变量中。

  • 现在,我们将收到的文件大小除以 1024 以获得文件的大小(以千字节为单位)。

  • 最后,借助 if-else 块打印结果。

示例

import java.net.*;
public class UCDemo {
   public static void main(String args[]) throws Exception {   
      try {
        // 文件链接
        URL shareLink = new URL("https://www.tutorialspoint.com/java/pdf/java_networking.pdf");
        // 与文件建立连接
        URLConnection urlConn = shareLink.openConnection();
        // 检索文件类型
        System.out.println("内容类型:" + urlConn.getContentType());
        // 检索文件大小
        long fileSize = urlConn.getContentLengthLong();
        long kb = fileSize / 1024;
        if(fileSize == -1) {
            System.out.println("无法确定文件大小!!");
        } else {
            System.out.println("给定文件的大小(KB):" + kb + " KB");
        }
      }
      catch(Exception exp) {
         System.out.println("Something went wrong!! Please check the file type!!");
      } 
   }
}

输出

Type of the content: application/pdf
Size of the given file in KB: 72 KB

结论

IP 地址是 32 位或 128 位无符号数字,用于唯一标识 Internet 上的设备。IP 主机的名称比数字地址更容易记住。因此,URL 以字符串的形式出现。在本文中,我们了解了 URL 和 URLConnection 类,它们有助于与万维网建立连接。这两个类都可以在"java.net"包中找到。


相关文章