文件的相关知识

什么是输入输出(I/O)

小贴士:内存与计算机主板之外的资源(外部设备)交换数据皆可定义为输入/输出:
键盘——标准输入设备,java中的设备文件标识:System.in; C语言cin。
显示器——标准输出设备,java中的设备文件标识:System.out; C语言cout。
显示器——标准错误输出设备,java中的设备文件标识:System.err; C语言cerr。
与网络交换数据、与硬盘交换数据都是输入输出。
在这里插入图片描述
输入:把数据从外部资源读入内存。通常使用read()方法。
输出:把数据从内存写入到外部资源。通常使用write()方法。
读写的方法底层都是由操作系统提供。

什么是文件

   计算机中为了把数据(包括程序本身)永久保存,需要借助于外部存储器,那么数据在外部存储器中的组织管理形式一般有三种:1、操作系统是以文件为基础的组织管理形式;2、关系数据库是以表(行(记录)/列(字段))为基础的组织管理形式;3、非关系数据库如数据仓库等是结合两种组织形式的优点,实现对大数据的组织管理。因此我们也可以理解为在操作系统下面我们把数据按照一定的规则进行组织管理并永久存储在外部存储器上的形式就是文件。为了方便标识我们通常用字符串标识文件,这就是文件的文件名,就如同我们每个人都有一个名字来标识自己一样,目录可以理解为特殊的文件,它本身没有内容,但它指定其下面管理一些其它目录和文件,所以目录也有目录名(字符串)。

文件路径

   那么,外部存储器(以磁盘为例)上存储了那么多文件,我们如何让程序找到相应的文件呢?这就要借助与目录结构形式,把文件按照逐级目录指定其存储的文件夹,以及文件的名字共同构成了我们说的文件的路径——也就是找到文件的路径。所以我们可以准确的说:
   **路径**——指向文件存储位置的逐级目录(文件夹)和文件名本身。我们通常用一串字符串来指明。
   那么多级目录和文件名都是字符串,我们如何区分不同的目录名和文件名呢,这里就需要有一个名字**分隔符**。由于历史的原因不同的操作系统其分隔符有点不同:
   一类操作系统:Windows的文件目录(文件夹)分隔符是:’\’
   另一类操作系统:Linux、Unix、Mac OS的文件目录(文件夹)分隔符是:’/’
   URL/URI使用的文件目录(文件夹)分隔符是:’/’
   不管什么操作系统,统一在程序里面使用的文件目录(文件夹)分隔符是:’/’
   路径又分为绝对路径和相对路径:
   **绝对路径**:绝对路径名的指定是从树型目录结构顶部的根目录开始到某个目录或文件的路径,由一系列连续的目录组成,中间用斜线分隔,直到要指定的目录或文件,路径中的最后一个名称即为要指向的目录或文件[1]。所以,完整的描述文件位置的路径就是绝对路径,以web站点根目录为参考基础的目录路径。之所以称为绝对,意指当所有网页引用同一个文件时,所使用的路径都是一样的。
   相关示例请参考:百度百科:绝对路径
   https://baike.baidu.com/item/绝对路径/481185?fr=aladdin#reference-[1]-25377-wrap
   **相对路径**:相对路径就是指由这个文件所在的路径引起的跟其它文件(或文件夹)的路径关系。使用相对路径可以为我们带来非常多的便利。HTML绝对路径(absolute path)指带域名的文件的完整路径。
   相关示例请参考:百度百科:相对路径
   https://baike.baidu.com/item/相对路径/479926?fr=aladdin

Java的文件类

File类

    java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。File对象主要用来获取文件本身的一些信息,不涉及对文件的读写操作。

构造方法:
public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。
public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File实例。
获取相关信息的方法:
public String getName() 获取文件的名字。
public boolean canRead() 判断文件是否是可读的。
public boolean canWrite() 判断文件是否可被写入。
public boolean exits() 判断文件是否存在。
public long length() 获取文件的长度(单位是字节)。
public String getAbsolutePath() 获取文件的绝对路径。
public String getParent() 获取文件的父目录。
public long lastModified() 获取文件最后修改的时间。
判断功能的方法:
public boolean exists() :此File表示的文件或目录是否实际存在。
public boolean isDirectory() :此File表示的是否为目录。
public boolean isFile() :此File表示的是否为文件。
public boolean isHidden() 判断文件是否是隐藏文件。
列出目录中的文件的方法:
public String[] list() 用字符串形式返回目录下的全部文件。
public File [] listFiles() 用File对象形式返回目录下的全部文件。
public String[] list(FilenameFilter obj) 用字符串形式返回目录下的指定类型的所有文件。
public File [] listFiles(FilenameFilter obj) 用File对象形式返回目录下的指定类型所有文件。
【注】:FilenameFilter是一个文件过滤器类,如果有时间我给大家讲,否则请自学。上述两方法的参数FilenameFilter是一个接口,该接口有一个方法:
public boolean accept(File dir,String name);
创建删除功能的方法:
创建目录的方法: public boolean mkdir();
创建多级目录的方法: public boolean mkdirs();
创建文件的方法: public boolean createNewFile();
删除文件/目录的方法: public boolean delete();java.io

接口 FilenameFilter

public interface FilenameFilter实现此接口的类实例可用于过滤器文件名。Abstract Window Toolkit 的文件对话框组件使用这些实例过滤 File 类的 list 方法中的目录清单。方

法详细信息

boolean accept(File dir, String name)测试指定文件是否应该包含在某一文件列表中。
参数:
dir - 被找到的文件所在的目录。
name - 文件的名称。
返回: 当且仅当该名称应该包含在文件列表中时返回 true;否则返回 false。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值