文章目录

  • 1 概述
  • 2 获取
    • 2.1 获取 File类 本身的属性
    • 2.2 获取系统根目录和容量
    • 2.3 获取指定目录全部文件
  • 3 创建与删除
  • 4 判断
  • 5 重命名
  • 6 过滤器

1 概述

IO流,流对象,只能操作设备上的数据,其他的都操作不了。
文件夹,文件的属性(文件的创建,修改,读写属性,文件名等),这些需要用 File类来操作。

File类

用来将文件或者文件夹(目录) 封装成对象

文件一旦变为对象,可以先操作文件,再操作文件中的数据

方便对文件或者文件夹的属性信息进行操作
File对象可以作为参数,传递给流的构造函数

文件一旦变为对象,可以先操作文件,再操作文件中的数据,可以将一个已存在的,或者不存在的 文件或者目录 封装成 File对象

几个构造函数
File(String pathname)
通过 将给定路径 名字字符串 转换为抽象路径名  来创建一个 新File实例
例:File f1 = new File("c:\\a.txt"); // 想把谁封装成对象,把谁往里写就可以了

File(String parent, String child) File(File parent, String child)
根据 parent路径名 字符串 和 child路径名 字符串,创建一个 新File实例
例:File f2 = new File("c:\\","a.txt");
File( URI uri )
通过 将给定的 file: URI 转换为一个 抽象路径名 来创建一个 新的File实例

File类的功能主要分为5种:获取,创建与删除,判断,重命名,过滤器,下面分别讲解

2 获取

2.1 获取 File类 本身的属性

获取 File类 本身的属性,包括,获取文件名称,文件路径,文件大小,文件修改时间等

File f = new File("G:\\test\\GestureTest\\a.txt");
String name = f.getName();
String absPath = f.getAbsolutePath(); // 绝对路径
String path = f.getPath();
long len = f.length(); // 文件的大小
long time = f.lastModified(); // 文件上次的修改时间
// 打印出来的时间是 1336102144203 怎么把它变为有效的时间
Date date = new Date(time); // 先把时间封装
// 把时间 格式化
DateFormat dateFormate = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);
String str_time = dateFormate.format(date);
// 怎么判断文件有没有被改写,判断文件上次修改时间
// 单独开辟一条线程,监控文件的修改时间,一旦文件修改,就重新读取文件的内容System.out.println("parent:"+ f.getParent()); // getParent() 获取父目录
System.out.println("name:"+name);
System.out.println("absPath:"+absPath);
System.out.println("path:"+path);
System.out.println("len:"+len);
System.out.println("time:"+time);

输出结果

parent:G:\test\GestureTest
name:a.txt
absPath:G:\test\GestureTest\a.txt
path:G:\test\GestureTest\a.txt
len:35
time:1537322126301
2.2 获取系统根目录和容量

static File listRoots() 列出可用的文件系统根

private static void getListRoots() {File[] files = File.listRoots();for(File file:files){System.out.println(file); // 这个打印电脑根目录 C:\   D:\  E:\  F:\  G:\}File file = new File("G:\\");System.out.println("getFreeSpace:"+file.getFreeSpace()); // 常用System.out.println("getTotalSpace:"+file.getTotalSpace());System.out.println("getUsableSpace:"+file.getUsableSpace());    }

输出结果:

C:\
D:\
E:\
F:\
G:\
getFreeSpace:32711270400
getTotalSpace:161060220928
getUsableSpace:32711270400
2.3 获取指定目录全部文件

如果现在给出了一个目录,则可以直接列出目录中的内容。列出的方法在File类中存在两个:

  • 以字符串数组的形式返回:public String[] list()
  • 以File数组的形式返回:public File[] listFiles()

分别演示如下:
public String[] list() ,以字符串数组的形式返回,列出了全部的名字,包括文件夹得名字和文件的名字

private static void getList() {File f = new File("G:"+ File.separator);String[] str = f.list();for(String s:str){System.out.println(s);}
}

输出结果:

$RECYCLE.BIN
a
app
cpcopy
demo
exerise
JAVA
Javaex
JAVA视频
jdk
jing
Jlex
... ...

public File[] listFiles(),以File数组的形式返回,列出了全部路径

private static void getlistFiles() {File f = new File("G:"+File.separator);File[] files = f.listFiles();for(File file:files){System.out.println(file);}   }

输出结果:

G:\$RECYCLE.BIN
G:\a
G:\app
G:\cpcopy
G:\demo
G:\exerise
G:\JAVA
... ...

3 创建与删除

文件的创建与删除,方法的返回类型是 boolean类型

// 文件的创建和删除
File file = new File("file.txt");
// 和输出流不一样,如果文件不存在,则创建,如果文件存在,则不创建
boolean b = file.createNewFile();
System.out.println("b="+b);
boolean b = file.delete();
System.out.println("b="+b);// 文件夹的创建与删除
File dir = new File("abc\\q\\e\\c\\z\\r\\w\\y\\f\\e\\g\\s"); //创建多级目录
boolean b = dir.mkdir();//make directory       // 创建单级目录
dir.mkdirs();          //创建多级目录
System.out.println(dir.delete());  // 文件夹的删除
System.out.println(dir.delete());  // 文件夹的删除
说明:
windows的删除是从里往外删的,如果文件夹里有内容,直接删除,是删不掉的
如果文件夹里没有内容,直接删可以删掉对于多级目录,使用 delete()方法,返回true,最里面的 s 被删除掉如果文件正在被流所操作,同样也是删不掉

4 判断

我们若想操作一个文件,就要先判断这个文件存不存在

File f = new File("a.txt");
boolean b = f.exists();
System.out.println("b="+b);  // --- 判断一个文件是否存在的代码File f = new File("aaa");
f.mkdir(); // 执行完这句,建立一个名为 aaa.txt的文件夹File f = new File("aaa");
f.createNewFile(); // 建立一个文件aaa不一定是目录,a.txt 也不一定是文件所以如果文件未知,在操作前,先判断一下是否存在File f=new File("d:"+File.separator+"test.txt");if(f.exists()){// 进行操作}else{try {f.createNewFile(); // 不存在,就创建文件} catch (IOException e) {e.printStackTrace();}}
}

5 重命名

如果在同一个目录下,是重命名,如果不在同一目录下,是剪切

public static void renameToDemo() {File f1 = new File("c:\\9.mp3");File f2 = new File("d:\\aa.mp3");boolean b = f1.renameTo(f2);System.out.println("b="+b);}

6 过滤器

常用方法

String[] list( FilenameFilter filter )
返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中,满足指定过滤器的文件和目录
FilenameFilter --- 接口

原理

过滤器,第一步做的,还是先调用 list,把这个 list下,所有目录都拿到,然后遍历数组,只要符合自己创建的 FilenameFilter.accept(dir, name);,只要返回true,就把符合条件的 内容 往数组里存

代码实例1

// 过滤器 --- 找发非隐藏文件
public class FilterByHidden implements FileFilter {public boolean accept(File pathname) {return !pathname.isHidden();}
}private static void hiddenFile() {File f = new File("C:\\");File[] files = f.listFiles(new FilterByHidden());for(File file: files){System.out.println(file);}}

输出结果

C:\AppData
C:\BluetoothExchangeFolder
C:\dlcache
C:\Documents and Settings
C:\inetpub
C:\Intel
C:\MiFlashvcom.ini
C:\PerfLogs
C:\Program Files
C:\Program Files (x86)
C:\SWSETUP
C:\unintall.log
C:\Users
C:\WiFi_Log.txt
C:\Windows

代码实例2 专门用于过滤后缀名的过滤器

public class SuffixFilte implements FilenameFilter {private String suffix ;  // 我要过滤什么,不知道,你传什么,我过滤什么 public SuffixFilte(String suffix) {super();this.suffix = suffix;}public boolean accept(File dir, String name) {return name.endsWith(suffix);}
}private static void txtFile() {File f = new File("C:\\");File[] files = f.listFiles(new SuffixFilte(".txt"));for(File file: files){System.out.println(file);}}

输出结果:

C:\WiFi_Log.txt

Java IO流笔记4 --- File类相关推荐

  1. Java IO流笔记

    File 1.定义 文件和文件夹的抽象表示形式 java把文件和文件夹封装为File类我们可以使用File类对文件或文件夹进行操作 2.路径 绝对路径:是一个完整的路径,从盘符开始 相对路径:是一个简 ...

  2. Java JDK 学习笔记:File类

    不同的操作系统对于文件系统路径的设置各有差别.例如在Windows中,一个路径的表示法可能是:     "C:\\Workspace\\CH14\\" 而在Linux下的路径设置可 ...

  3. Java IO流以及File类

    目录 File类概述 File类常用方法 IO流 io流分类 Writer字符输出流 覆盖写入 追加写入 Reader字符输入流 字节流 字节输出流 覆盖写入 字符输入流 文件的拷贝 字符流文件的拷贝 ...

  4. java io流拒绝访问_JAVA IO流 - 张宏良的个人空间 - OSCHINA - 中文开源技术交流社区...

    IO流 一.File类的使用 java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关 File能新建.删除.重命名文件和目录,但File不能访问文件内容本身.如果需要访问文件内容本身 ...

  5. file数组 删除文件_java编程IO基础之一:File类

    在整个java.io包中,File类是唯一的一个与文件本身操作有关的类,既可以执行文件的创建.删除.重命名,取得文件大小和修改日期. File的构造函数: public File(String pat ...

  6. Java IO流中 File文件对象与Properties类(四)

    File类 用来将文件或目录封装成对象 方便对文件或目录信息进行处理 File对象可以作为参数传递给流进行操作 File类常用方法 创建 boolean createNewFile():创建新文件,如 ...

  7. java不死神兔总数_Java基础知识强化之IO流笔记13:递归之不死神兔问题(斐波那契数列)...

    1.这个问题是如下的: 有一对兔子,从出生后第3个月起,每个月都生一对兔子,小兔子长到第3个月又生一对兔子,加入兔子都不死,问第20个月兔子的对数? 分析:我们找规律 兔子对数 第1个月:   1 第 ...

  8. Java IO流学习总结二:File

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/54581478 本文出自[赵彦军的博客] Java IO流学习总结一:输入输出流 J ...

  9. 【java笔记】File类(1)概述,静态成员,构造方法

    [java笔记]File类(2):常用方法_m0_52043808的博客-CSDN博客 java.io.File类: 文件和目录路径名的抽象表示. ●java把电脑中文件和文件夹(目录)封装为了一个F ...

  10. Java IO流大闯关--IO流的常用实现类

    这个系列的博客主要是对Java高级编程中IO流相关的知识点做一个梳理,内容主要包括File类.IO流原理及流的分类.文件流.缓冲流.转换流.标准输入输出流.打印流.数据流.对象流.随机存取文件流.NI ...

最新文章

  1. ASP超级链接和HTML函数正则表达式 修正版
  2. containerd和docker技术的比较
  3. 0点mysql_【转载】MySQL查询当天0点,昨天时间
  4. 集合框架 Queue---BlockingQueue详解
  5. cusparseScsrsv_analysis函数导致内存暴涨问题
  6. Linux中断处理:上半部和下半部
  7. linux cacti 搭建,linux下搭建cacti监控(示例代码)
  8. qt mysql驱动不能用了,Qt使用msvc编译MySQL驱动_MySQL
  9. 【基于机器视觉与深度学习的人机对弈机器人——决策篇】
  10. NSGA2算法原理及python实现
  11. GEC6818开发板使用和配置
  12. (五)RewriteBase 与RewriteCond 语法说明
  13. 易企秀如何生成图片_易企秀如何制作圆形照片
  14. matlab求点,MATLAB求两点中点
  15. C++ 11 内容总结
  16. 数据仓库工程师面试经验(2019)
  17. 数值计算笔记-部分主元消去cholesky分解
  18. 【Nordic蓝牙模块justwork模式配置】
  19. 3d打印驱动开启uart有什么用TMC2208如何在Ramps1.4开启uart
  20. java type proposals_eclipse自动提示类型的作用

热门文章

  1. 加载中动画(gif)
  2. 台式计算机看网络电视,台式电脑无线投屏到电视
  3. 计算机c盘如何扩大,C盘太小怎么办?教你扩大容量!
  4. 获取 app 签名的方式汇总
  5. 优酷下载的会员独享KUX视频格式怎么转换成MP4
  6. RF模型(随机森林模型)详解
  7. php如何打包成apk,windows下PHP批量生成打包android程序APK
  8. 使用UniWebView时的内存管理
  9. H264视频压缩算法简析
  10. Android:实现应用版本更新