File类


2019-07-01  22:41:42  by冲冲

在 Java 中,File 类是 java.io 包中唯一映射磁盘文件本身的对象。File类可以获取文件的相关信息(查看文件名、路径、访问权限、修改日期等),但是File 类不能从文件中读取信息和向文件写入信息。

1. File类的三种构造方法

 1 //File(File parent,String child):根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
2 File parent = new File("E:\\test");
3 File child = new File(parent, "demo.txt");
4
5 //File(String pathname):通过将给定路径名字符串转换成抽象路径名来创建一个新 File 实例。如果给定字符串是空字符串,则结果是空的抽象路径名。
6 File file = new File("E:\\test\\demo.txt");
7
8 //File(String parent,String child):根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
9 String parent = "E:\\test\\";
10 String child = "demo.txt";
11 File file = new File(parent,child);

注意:Windows操作系统的路径,如 E:\demo\hello.java,在Java程序中,其路径写为 E:/demo/hello.java 或者 E:\\demo\\hello.java

2. File类的主要功能

(1)获取文件属性

 1 import java.io.File;
2 import java.util.Date;
3
4 public class File_test {
5 public static void main(String[] args){
6 File f=new File("E:\\test\\hello.doc"); //抽象路径名为"E:\\test\\hello.doc"
7 System.out.println("获取文件 E:\\test\\hello.doc 的信息:");
8 System.out.println("-------------------------------");
9 System.out.println("文件长度:"+f.length()+"字节");
10 System.out.println("判断该File对象是不是文件:"+(f.isFile()?"是文件":"不是文件"));
11 System.out.println("判断该File对象是不是目录:"+(f.isDirectory()?"是目录":"不是目录"));
12 System.out.println("是否可读:"+(f.canRead()?"可读取":"不可读取"));
13 System.out.println("是否可写:"+(f.canWrite()?"可写入":"不可写入"));
14 System.out.println("是否隐藏:"+(f.isHidden()?"是隐藏文件":"不是隐藏文件"));
15 System.out.println("最后修改日期:"+new Date(f.lastModified()));
16 System.out.println("文件名称:"+f.getName());
17 System.out.println("文件父路径:"+f.getParent());
18 System.out.println("抽象路径名转化为路径名字符串:"+f.getPath()); //等价于 f.toString()
19 System.out.println("判断抽象路径名是否为绝对路径:"+(f.isAbsolute()?"是绝对路径":"不是绝对路径"));
20 System.out.println("文件绝对路径:"+f.getAbsolutePath());
21 System.out.println("-------------------------------");
22 }
23 }

运行结果

获取文件 E:\test\hello.doc 的信息:
-------------------------------
文件长度:9216字节
判断该File对象是不是文件:是文件
判断该File对象是不是目录:不是目录
是否可读:可读取
是否可写:可写入
是否隐藏:不是隐藏文件
最后修改日期:Mon Jul 01 21:20:47 CST 2019
文件名称:hello.doc
文件父路径:E:\test
抽象路径名转化为路径名字符串:E:\test\hello.doc
判断抽象路径名是否为绝对路径:是绝对路径
文件绝对路径:E:\test\hello.doc
-------------------------------

public boolean setReadOnly():设置该文件只能读,不能写。

1 public static void main(String[] args) {
2 File f = new File("E:\\test\\hello.doc"); // 抽象路径名为"E:\\test\\hello.doc"
3 f.setReadOnly();
4 System.out.println("是否可读:" + (f.canRead() ? "可读取" : "不可读取"));
5 System.out.println("是否可写:" + (f.canWrite() ? "可写入" : "不可写入"));
6 }

运行结果

是否可读:可读取
是否可写:不可写入

(2)创建和删除文件、创建和删除目录、遍历目录list()和list()

String[] list():该方法表示返回由 File 对象表示目录中所有文件和子目录名称组成的字符串数组,如果调用的 File 对象不是目录,则返回 null。

提示:list() 方法返回的数组中仅包含文件名称,而不包含路径。但不保证所得数组中的相同字符串将以特定顺序出现,特别是不保证它们按字母顺序出现。

 1 package test0607;
2
3 import java.io.File;
4 import java.io.IOException;
5 import java.util.Date;
6
7 public class File_test {
8 public static void main(String[] args) throws IOException {
9 File nf = new File("E:/test/new_file.doc"); // 创建指向文件 E:/test/new_file.doc 的File对象
10 if (nf.exists()) // 判断该文件是否存在
11 {
12 nf.delete(); // 存在则先删除
13 }
14 nf.createNewFile(); // 再创建该文件
15
16 File dir = new File("E:/test01"); // 创建指向目录 E:/test01 的File对象
17 if (dir.exists()) // 判断该目录是否存在
18 {
19 dir.delete(); // 存在则先删除
20 }
21 dir.mkdir(); // 再创建该目录
22
23 File lf = new File("E:/test/"); // 创建需要遍历的File对象
24 System.out.println("文件类型\t文件大小\t文件名称");
25 System.out.println("------------------------------");
26 String fileList[] = lf.list(); // 调用不带参数的list()方法
27 for (int i = 0; i < fileList.length; i++) { // 遍历返回的字符数组
28 System.out.print((new File("E:/test/", fileList[i])).isFile() ? "文件" + "\t" : "文件夹" + "\t");
29 System.out.print((new File("E:/test/", fileList[i])).length() + "字节" + "\t");
30 System.out.println(fileList[i]);
31 // 由于 list()方法返回的字符数组中仅包含文件名称,因此为了获取文件类型和大小,必须先转换为 File对象再调用其方法。
32 }
33 System.out.println("------------------------------");
34 }
35 }

运行结果

文件类型    文件大小    文件名称
----------------------------------
文件夹 0字节 dir01
文件夹 0字节 dir02
文件 0字节 good.bmp
文件 9216字节 hello.doc
文件 0字节 hi.txt
文件 0字节 new_file.doc
----------------------------------

String[] list(FilenameFilter filter): 该方法的作用与 list() 方法相同,不同的是返回数组中仅包含符合 filter过滤器 的文件和目录,如果 filter 为 null,则接受所有名称。

首先需要创建文件过滤器,该过滤器必须实现 java.io.FilenameFilter 接口,并在 accept() 方法中指定允许的文件类型。

 1 import java.io.File;
2 import java.io.FilenameFilter;
3 import java.io.IOException;
4 import java.util.Date;
5
6 class DocFilter implements FilenameFilter
7 {
8 //实现 FilenameFilter 接口
9 @Override
10 public boolean accept(File dir,String name)
11 {
12 //指定允许的文件类型
13 return name.endsWith(".txt")||name.endsWith(".bmp");
14 }
15 }
16
17 public class File_test03 {
18 public static void main(String[] args) throws IOException {
19 File lf = new File("E:/test/"); // 创建需要遍历的File对象
20 System.out.println("文件类型\t文件大小\t文件名称");
21 System.out.println("------------------------------");
22 String fileList[] = lf.list(new DocFilter()); // 调用不带参数的list()方法
23 for (int i = 0; i < fileList.length; i++) { // 遍历返回的字符数组
24 System.out.print((new File("E:/test/", fileList[i])).isFile() ? "文件" + "\t" : "文件夹" + "\t");
25 System.out.print((new File("E:/test/", fileList[i])).length() + "字节" + "\t");
26 System.out.println(fileList[i]);
27 // 由于 list()方法返回的字符数组中仅包含文件名称,因此为了获取文件类型和大小,必须先转换为 File对象再调用其方法。
28 }
29 System.out.println("------------------------------");
30 }
31 }

运行结果

文件类型    文件大小    文件名称
------------------------------
文件 0字节 good.bmp
文件 0字节 hi.txt
------------------------------

【JavaSE】IO(1)-- File类的更多相关文章

  1. Java—IO流 File类的常用API

    File类 1.只用于表示文件(目录)的信息(名称.大小等),不能用于文件内容的访问. package cn.test; import java.io.File; import java.io.IOE ...

  2. java io包File类

    1.java io包File类, Java.io.File(File用于管理文件或目录: 所属套件:java.io)1)File对象,你只需在代码层次创建File对象,而不必关心计算机上真正是否存在对 ...

  3. Java的IO操作---File类

    目标 1)掌握File类作用 2)可以使用file类中方法对文件进行读写操作. File类 唯一与文件有关的类.使用file类可进行创建或删除操作,要想使用File类,首先观察File类的构造方法. ...

  4. java之io之File类的list()方法过滤目录的使用

    java的io的知识中,File类必须掌握.File类是对文件或者文件夹的封装.它本身并不能对所封装的文件进行读写,它封装的只是文件或文件夹的周边知识,比如 大小啦,创建日期啦,路径啦等等. 如果Fi ...

  5. java之io之file类的常用操作

    java io 中,file类是必须掌握的.它的常用api用法见实例. package com.westward.io; import java.io.File; import java.io.IOE ...

  6. JAVA:IO流——File类

    1.掌握File 类的作用 2.可以使用File 类中的方法对文件进行操作 所有的 io 操作都保存在 java.io 包中. 构造方法:public File (String pathname) 直 ...

  7. java IO之 File类+字节流 (输入输出 缓冲流 异常处理)

    1. File类

  8. Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)

    第一讲     File类 一.概述 1.File类:文件和目录路径名的抽象表现形式 2.特点: 1)用来将文件或文件夹封装成对象 2)方便于对文件与文件夹的属性信息进行操作 3)File类的实例是不 ...

  9. java学习笔记IO之File类

    File类总结 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times } p.p2 { margin: 0.0px 0.0px 0.0p ...

  10. Java IO流-File类

    2017-10-24 23:50:22 File类 File类:文件和目录路径名的抽象表示形式.该文件或者目录不一定真实存在. * 构造方法 File类有四种构造方法,主要采用的构造方法师第二种,也就 ...

随机推荐

  1. SudokuSolver 1.0:用C++实现的数独解题程序 【一】

    SudokuSolver 1.0 用法与实现效果 SudokuSolver 是一个提供命令交互的命令行程序,提供的命令清单有: H:\Read\num\Release>sudoku.exe Or ...

  2. 【错误分析】NX error status: 32

    在进行NX 制图里面的表格注释合并单元格时,总是报错NX error status: 32,找了很久都不知道问题所在. 报错提示如下: NXOpen.NXException: NX error sta ...

  3. Caterpillar的启动以及自动化启动脚本

    Caterpillar的启动以及自动化启动脚本 Caterpillar是基于以太坊的BPMS,建模的BPMN图形可被Caterpillar转化为solidity程序部署到以太坊中. Caterpill ...

  4. 【c++ Prime 学习笔记】第10章 泛型算法

    标准库未给容器添加大量功能,而是提供一组独立于容器的泛型算法 算法:它们实现了一些经典算法的公共接口 泛型:它们可用于不同类型的容器和不同类型的元素 利用这些算法可实现容器基本操作很难做到的事,例如查 ...

  5. Egg.js学习与实战系列 · Post请求`csrf token`问题

    在使用axios请求egg.js封装的post接口时出现missing csrf token 或 invalid csrf token.踩过坑的新手估计不在少数,本篇记录一下解决方法. 问题原因 引用 ...

  6. 极速上手 VUE 3 —— teleport传送门组件

    一.teleport 介绍 teleport 传送门组件,提供一种简洁的方式,可以指定它里面的内容的父元素.通俗易懂地讲,就是 teleport 中的内容允许我们控制在任意的DOM中,使用简单. 使用 ...

  7. JVM:内存结构

    JVM:内存结构 说明:这是看了 bilibili 上 黑马程序员 的课程 JVM完整教程 后做的笔记 内容 程序计数器 虚拟机栈 本地方法栈 堆 方法区 直接内存 1. 程序计数器 1.1 定义 P ...

  8. BUAA 2020 软件工程 热身作业

    BUAA 2020 软件工程 热身作业 Author: 17373051 郭骏 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 第一次作业-热身! ...

  9. [hi3521] nand flash 的 boot 启动模式的区别?

    spi nand flash 的 boot 启动模式选择.0:1 线 boot:1:4 线 boot.请问,1线boot和4线boot有什么区别呢?该如何选择呢?     收藏 顶 踩   回复 使用 ...

  10. 攻防世界 杂项13.can_has_stdio?

    打开发现是由trainfuck编码组成的小星星阵容,果断交给解密网站进行解密, 解密网站:http://ctf.ssleye.com/brain.html flag:flag{esolangs_for ...