【JavaEE学习日记】----文件操作和IO 上

目录

1.认识文件(file)

1.1.文件的分类

1.2.关于目录结构

1.3.绝对路径和相对路径

2.java中的文件操作

2.1.File类:

3.代码示例


1.认识文件(file)

我们先来认识狭义上的文件 (file) 。针对硬盘这种持久化存储的 I/O 设备,当我们想要进行数据保存时,往往不是保存成一个整体,而是独立成一个个的单位进行保存,这个独立的单位就被抽象成文件的概念,就类似办公桌上的一份份真实的文件一般。
文件除了有数据内容之外,还有一部分信息,例如文件名、文件类型、文件大小等并不作为文件的数据 而存在,我们把这部分信息可以视为文件的元信息。

1.1.文件的分类

1)文本文件:里面存储的是字符,文本本质上是存储的字节,但是字节和字节在一起就变成了了字符

2)二进制文件:里面存储的是字节

如何判定两者呢?

将一个文件使用记事本打开,如果出来的不是乱码就是文本文件,如果出来的是乱码,就是二进制文件。常见的文本文件类似于 .c  .txt  .java,常见的二进制文件:.doc  .ppt  .exe  .java

1.2.关于目录结构

在计算机里,保存管理文件是通过操作系统的“文件系统”这样的模块来负责的,文件系统中一般通过“树形”结构来组织磁盘上的目录和文件的,这里的树形结构就类似于N叉树

 整体的文件系统就是这种树形结构,如果是一个普通的文件,就是类似于叶子结点,如果是一个目录文件,就相当于是根节点,包含叶子节点

1.3.绝对路径和相对路径

在操作系统中通过“路径”这样的概念来描述一个具体的文件或者目录的位置。路径这里有两种描述风格

1)绝对路径:以盘符开头的

D:\Java\bin  C:\Program Files\Huawei\Huawei OSD

2)相对路径以. 或者 .. 开头的

./src.zip  ../java.exe

. 表示以当前路径为基准目录,去找目标文件,  .. 表示以当前基准目录的上一级去找目标文件

2.java中的文件操作

Java 中通过 java.io.File 类来对一个文件(包括目录)进行抽象的描述。注意,有 File 对象,并不
代表真实存在该文件。

2.1.File类:

①成员变量
Modifier and TypeField and Description
static StringpathSeparator

与系统相关的路径分隔符字符,为方便起见,表示为字符串。

static charpathSeparatorChar

与系统相关的路径分隔符。

static Stringseparator

与系统相关的默认名称 - 分隔符字符,以方便的方式表示为字符串。

static charseparatorChar

与系统相关的默认名称分隔符。

②构造方法
Constructor and Description
File(File parent, String child)

从父抽象路径名和子路径名字符串创建新的 File实例。

File(String pathname)

通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。

File(String parent, String child)

从父路径名字符串和子路径名字符串创建新的 File实例。

File(URI uri)

通过将给定的 file: URI转换为抽象路径名来创建新的 File实例。

③方法

booleancanExecute()

测试应用程序是否可以执行此抽象路径名表示的文件。

booleancanRead()

测试应用程序是否可以读取由此抽象路径名表示的文件。

booleancanWrite()

测试应用程序是否可以修改由此抽象路径名表示的文件。

intcompareTo(File pathname)

比较两个抽象的路径名字典。

booleancreateNewFile()

当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。

static FilecreateTempFile(String prefix, String suffix)

在默认临时文件目录中创建一个空文件,使用给定的前缀和后缀生成其名称。

static FilecreateTempFile(String prefix, String suffix, File directory)

在指定的目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。

booleandelete()

删除由此抽象路径名表示的文件或目录。

voiddeleteOnExit()

请求在虚拟机终止时删除由此抽象路径名表示的文件或目录。

booleanequals(Object obj)

测试此抽象路径名与给定对象的相等性。

booleanexists()

测试此抽象路径名表示的文件或目录是否存在。

FilegetAbsoluteFile()

返回此抽象路径名的绝对形式。

StringgetAbsolutePath()

返回此抽象路径名的绝对路径名字符串。

FilegetCanonicalFile()

返回此抽象路径名的规范形式。

StringgetCanonicalPath()

返回此抽象路径名的规范路径名字符串。

longgetFreeSpace()

返回分区未分配的字节数 named此抽象路径名。

StringgetName()

返回由此抽象路径名表示的文件或目录的名称。

StringgetParent()

返回此抽象路径名的父 null的路径名字符串,如果此路径名未命名为父目录,则返回null。

FilegetParentFile()

返回此抽象路径名的父,或抽象路径名 null如果此路径名没有指定父目录。

StringgetPath()

将此抽象路径名转换为路径名字符串。

longgetTotalSpace()

通过此抽象路径名返回分区 named的大小。

longgetUsableSpace()

返回上的分区提供给该虚拟机的字节数 named此抽象路径名。

inthashCode()

计算此抽象路径名的哈希码。

booleanisAbsolute()

测试这个抽象路径名是否是绝对的。

booleanisDirectory()

测试此抽象路径名表示的文件是否为目录。

booleanisFile()

测试此抽象路径名表示的文件是否为普通文件。

booleanisHidden()

测试此抽象路径名命名的文件是否为隐藏文件。

longlastModified()

返回此抽象路径名表示的文件上次修改的时间。

longlength()

返回由此抽象路径名表示的文件的长度。

String[]list()

返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。

String[]list(FilenameFilter filter)

返回一个字符串数组,命名由此抽象路径名表示的目录中满足指定过滤器的文件和目录。

File[]listFiles()

返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。

File[]listFiles(FileFilter filter)

返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。

File[]listFiles(FilenameFilter filter)

返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。

static File[]listRoots()

列出可用的文件系统根。

booleanmkdir()

创建由此抽象路径名命名的目录。

booleanmkdirs()

创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。

booleanrenameTo(File dest)

重命名由此抽象路径名表示的文件。

booleansetExecutable(boolean executable)

为此抽象路径名设置所有者的执行权限的便利方法。

booleansetExecutable(boolean executable, boolean ownerOnly)

设置该抽象路径名的所有者或每个人的执行权限。

booleansetLastModified(long time)

设置由此抽象路径名命名的文件或目录的最后修改时间。

booleansetReadable(boolean readable)

一种方便的方法来设置所有者对此抽象路径名的读取权限。

booleansetReadable(boolean readable, boolean ownerOnly)

设置此抽象路径名的所有者或每个人的读取权限。

booleansetReadOnly()

标记由此抽象路径名命名的文件或目录,以便只允许读取操作。

booleansetWritable(boolean writable)

一种方便的方法来设置所有者对此抽象路径名的写入权限。

booleansetWritable(boolean writable, boolean ownerOnly)

设置此抽象路径名的所有者或每个人的写入权限。

PathtoPath()

返回从此抽象路径构造的java.nio.file.Path对象。

StringtoString()

返回此抽象路径名的路径名字符串。

URItoURI()

构造一个表示此抽象路径名的 file: URI。

3.代码示例

示例一:

import java.io.File;
import java.io.IOException;
public class Main {
    public static void main(String[] args) throws IOException {
        File file = new File("..\\hello-world.txt"); // 并不要求该文件真实存在
        System.out.println(file.getParent());
        System.out.println(file.getName());
        System.out.println(file.getPath());
        System.out.println(file.getAbsolutePath());
        System.out.println(file.getCanonicalPath());
   }
}

运行结果:

 示例二:

import java.io.File;
import java.io.IOException;
public class Main {
    public static void main(String[] args) throws IOException {
        File file = new File("hello-world.txt"); // 要求该文件不存在,才能看到相同
的现象
        System.out.println(file.exists());
        System.out.println(file.isDirectory());
        System.out.println(file.isFile());
        System.out.println(file.createNewFile());
        System.out.println(file.exists());
        System.out.println(file.isDirectory());
        System.out.println(file.isFile());
        System.out.println(file.createNewFile());
   }
}

运行结果:

示例三:

import java.io.File;
import java.io.IOException;
public class Main {
    public static void main(String[] args) throws IOException {
        File file = new File("some-file.txt"); // 要求该文件不存在,才能看到相同的现
象
        System.out.println(file.exists());
        System.out.println(file.createNewFile());
        System.out.println(file.exists());
        System.out.println(file.delete());
        System.out.println(file.exists());
   }
}

运行结果:

    

示例四:

import java.io.File;
import java.io.IOException;
public class Main {
    public static void main(String[] args) throws IOException {
        File dir = new File("some-dir"); // 要求该目录不存在,才能看到相同的现象
        System.out.println(dir.isDirectory());
        System.out.println(dir.isFile());
        System.out.println(dir.mkdir());
        System.out.println(dir.isDirectory());
        System.out.println(dir.isFile());
   }
}

------

import java.io.File;
import java.io.IOException;
public class Main {
    public static void main(String[] args) throws IOException {
        File dir = new File("some-parent\\some-dir"); // some-parent 和 somedir 都不存在
        System.out.println(dir.isDirectory());
        System.out.println(dir.isFile());
        System.out.println(dir.mkdir());
        System.out.println(dir.isDirectory());
        System.out.println(dir.isFile());
   }
}

 运行结果:

mkdir() 的时候,如果中间目录不存在,则无法创建成功; mkdirs() 可以解决这个问题

mkdirs() 可以创建多个不存在的文件

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

w-ib

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值