Java网络基础URL类/InetAddress类//文件目录

URL类

URL统一资源定位器(Uniform Resource Locator),Java使用URL创建对象的应用程序称为客户端程序,一个URL对象存放着一个具体的资源的引用,一个URL对象通常包含最基本的三部分信息,协议,地址和资源

URL构造方法

URL类使用以下构造方法创建一个URL对象

public URL(String uspec);

例如

	try {
            URL url = new URL("https://kanbanflow.com/board/M1Rgeu");
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }

读取URL资源

URL对象调用InputStream openStream()方法可以返回一个输出流,该输出流指向URL对象所包含的资源
由于网络速度或其他因素问题,最好创建一个线程单独运行

显示URL资源中的HTML文件

Java中JEditorPane容器可以解析,执行HTML文件,也就是说可以把HTML文件读入JEditorPane
有以下的构造方法

  • public JEditorPane()
  • public JEditorPane(URL initialPage)
  • public JEditorPane(String url)

另外还可以调用public void setPage(URL page)方法显示新的URL中的资源

处理超链接

JEditorPane对象调用setEditable()方法将编辑属性设置为false,使网页不可编辑
其次JeditorPane对象调用addHyperlinkListener(HyperlinkListener listener)获取超链接事件监视器实现超链接功能

综合的例子

package Chapter_16.Part_1;

import javax.swing.*;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.URL;

class myWindow extends JFrame implements Runnable, ActionListener {
    Thread thread;
    JTextField jTextField;
    URL url;
    JButton jButton;
    JEditorPane jEditorPane;

    myWindow() {
        jTextField = new JTextField(30);
        jEditorPane = new JEditorPane();
        thread = new Thread(this);
        jButton = new JButton("GO");
        setTitle("浏览窗口");
        setBounds(500, 500, 600, 600);
        Container container = new Container();
        setVisible(true);
        jButton.addActionListener(this);
        container.setLayout(new FlowLayout());
        container.add(new JLabel("输入网址"));
        container.add(jTextField);
        container.add(jButton);
        add(container, BorderLayout.NORTH);
        jEditorPane.setEditable(false);
        jEditorPane.addHyperlinkListener(new HyperlinkListener() {
            @Override
            public void hyperlinkUpdate(HyperlinkEvent hyperlinkEvent) {
                if (hyperlinkEvent.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { //实现超链接
                    try {
                        jEditorPane.setPage(hyperlinkEvent.getURL());
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
        add(new JScrollPane(jEditorPane), BorderLayout.CENTER);
        validate();
    }

    @Override
    public void actionPerformed(ActionEvent actionEvent) {
        if (thread.isAlive() == false) {
            thread = new Thread(this);
            thread.start();
        }
    }

    @Override
    public void run() {
        try {
            jEditorPane.setText(null);
            url = new URL(jTextField.getText());
            jEditorPane.setPage(url);
        } catch (Exception e) {
            return;
        }
    }
}

public class Example16_1 {
    public static void main(String[] args) {
        myWindow myWindow = new myWindow();
    }
}

运行效果
在这里插入图片描述

InetAddress类

获取Internet主机上的地址

可以使用InetAddress类的静态方法

getByName(String s);

将一个域名或IP地址传给s,然后获得一个InetAddress对象,该对象含有主机地址的域名和IP,可以调用toString()方法将其输出
另外InetAddress类还有两个实例方法

  • public String getHostName() //获取域名
  • public String getHostAddres() //获取IP地址

获取本地机的地址

可以调用静态方法getLocalHost()获得一个InetAddress对象

具体例子

package Chapter_16.Part_1;

import java.net.InetAddress;
import java.net.UnknownHostException;

public class Example16_2 {
    public static void main(String[] args) {
        try {
            InetAddress inetAddress = InetAddress.getByName("www.baidu.com");   //查看百度的IP地址
            System.out.println(inetAddress.toString());
            System.out.println(inetAddress.getHostAddress());   //查看IP地址
        } catch (UnknownHostException e) {
            System.out.println("无法找到");
        }
    }
}

运行结果

C:\Users\Administrator\.IntelliJIdea2019.3\config\jdbc-drivers\Apache Derby\10.14.1.0\derby-10.14.1.0.jar" Chapter_16.Part_1.Example16_2
www.baidu.com/14.215.177.38
14.215.177.38

进程已结束,退出代码 0

文件目录

系统为每个文件设置一个描述性数据结构–文件控制块(FCB),文件目录就是文件控制块的有序集合

文件控制块

文件控制块是系统为管理文件而设置的一个数据结构.FCB是文件存在的标志,通常保函三类信息:基本信息类,存取控制信息类使用信息类

基本信息类:文件名、文件的物理位置、文件长度和文件块数等。
存取控制信息类:文件的存取权限。在UNIX系统中,将用户分成文件主、同组用户和一般用户三类,它们具有不同的操作权限。
使用信息类:建立文件的日期和时间、最后访问日期和时间、最后修改日期和当前使用的信息等。
为了实现文件目录的管理,通常将文件目录以文件的形式保存在外存空间,这个文件就被称为目录文件。
目录文件是长度固定的记录式文件。

目录结构

文件目录的组织与管理是文件管理中的一个重要方面,常见的目录结构有三种:一级目录结构二级目录结构多级目录结构
多级目录结构像一棵倒置的有根树,所以也称为树形目录结构
从树根向下,每一个节点是一个目录,叶节点是文件)DOS和UNIX等操作系统均采用多级目录结构。
在采用多级目录结构的文系统中,用户要访问一个文件,必须指出文件所在的路径名。
路径名包含从根目录开始到该文件的通路上所有各级目录名。
各级目录名之间,目录名与文件名之间需要用分隔符隔开。
例如,在DOS中分隔符为“\”,在UNIX中分隔符为“/”。
绝对路径名是指从根目录开始的完整文件名,即由从根目录开始的所有目录名以及文件名构成的。

CET4P201

  • damp
  • shift
  • omit
  • extension
  • adequate
  • departure
  • sophisticated
  • assumption
  • instruction
  • fry
  • potential
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值