上一篇《Java中的IO流(二)》把学习Java的字符流以及转换流作了一下记录,从本篇开始将把IO流中对文件或文件夹操作的对象File类的学习进行一下记录。

一,File类的构造函数及字段

  File类是将文件或文件夹封装成对象的类;方便对文件或文件夹的属性进行操作;File对象可以作为参数传递给流的构造函数。

  File类的构造函数重载了四个版本,这四个版本可以将已存在或不存在的文件或文件夹封装成为File类的对象;

  1. private static void file_demo1() throws URISyntaxException {
  2. // 接收一个String路径参数通过将字符串路径名转换为抽象路径名来创建一个File实例
  3. File file1 = new File("C:\\");
  4. // 接收一个String类型的父路径和一个String类型的子路径来创建一个File实例
  5. File file2 = new File("C:\\", "filepath");
  6. // 通过接收一个File类型的父路径和一个String类型的子路径来创建一个File实例
  7. File file3 = new File(file1, "filepath2");
  8. URI url = new URI("");
  9. //接收一个URI类型的路径来创建一个File实例
  10. File file4 = new File(url);
  11. }
  在上面的例子中,我们为了创建File类的实例,用了“C:\\”这样的字符路径,File类为了兼容各种操作系统,提供了获取系统提供的默认分隔符的静态字段
  1. private static void file_demo2() {
  2. //在Unix系统上引值为“/”;在Windows上此值为“\\”,返回String
  3. System.out.println(File.separator);
  4. //在Unix系统上引值为“/”;在Windows上此值为“\\”,返回char
  5. System.out.println(File.separatorChar);
  6. //在Unix系统上引值为“:”;在Windows上此值为“;”,返回String,例如用在环境变量的分隔上
  7. System.out.println(File.pathSeparator);
  8. //在Unix系统上引值为“:”;在Windows上此值为“;”,返回char,例如用在环境变量的分隔上
  9. System.out.println(File.pathSeparatorChar);
  10. }

二,File类的常用功能——获取

  1,获取文件名称

  2,获取文件路径

  3,获取文件大小

  4,获取文件修改时间

  1. 1    private static void file_demo3() {
    2 File file = new File("demo.txt");
  2. String fileName = file.getName();//文件名
  3. String filePath = file.getPath();//相对路径
  4. String fileAbsolutePath = file.getAbsolutePath();//绝对路径
  5. long len = file.length();//文件大小
  6. long modifytime = file.lastModified();//最后修改时间
  7. System.out.println("fileName:" + fileName);
  8. System.out.println("filePath:" + filePath);
  9. System.out.println("fileAbsolutePath:" + fileAbsolutePath); System.out.println("lostModified:" + modifytime);
  10. System.out.println("lengh:" + len);
    17     System.out.println("parent:"+file.getParent());//返回此抽象路径的父目录,若没有父目录则返回null
    18 System.out.println("parentFile:"+file.getParentFile());//返回此抽象路径的父目录的File对旬
    }
 三,文件或目录的创建与删除
  1,创建文件
  1. private static void file_demo4() throws IOException {
  2. File file = new File("a.txt");
  3. file.createNewFile();// 创建文件,若文件不存在则创建,若已存在则不创建
  4. // 静态字段,在默认临时路径下创建临时文件,第一个参数是文件名,第二个参数是文件后缀名,返回File对象
  5. File.createTempFile("temp", "aaa");
  6. // 静态字段,在指定目录下创建临时文件,第一个参数是文件名,第二个参数是文件后缀名,返回File对象
  7. File.createTempFile("temp", ".aaa", new File("C:\\Users"));
  8. }

  2,创建目录及删除目录或文件

  1. private static void file_demo5() {
  2. File file=new File("C:\\abc");
  3. file.mkdir();//创建文件夹也即是目录
  4. file.mkdirs();//创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。即创建“C:\a\b\c\d”这样的目录
  5. file.delete();//删除目录或文件,只能删除最内层的文件或目录,若多级目录只能删除一级
  6. file.deleteOnExit();//当虚拟机退出时删除文件或目录
  7. }

四,判断

  1. private static void file_demo6() {
  2. File file = new File("a.txt");
  3. System.out.println(file.exists());// 判断文件或目录是否存在
  4. System.out.println(file.isDirectory());//判断是不是目录
  5. System.out.println(file.isFile());//判断是不是文件
  6. System.out.println(file.isAbsolute());//判断是不是绝对路径
  7. System.out.println(file.isHidden());//判断是不是隐藏文件或目录
  8. }

五,重命名

  1. private static void file_demo7() {
  2. File file = new File("2.avi");
  3. System.out.println(file.renameTo(new File("C:\\9999.avi")));//相当于剪切+重命名的功能
  4. }

六,系统根目录和容量大小

  1. private static void file_demo8() {
  2. File[] files = File.listRoots();//系统根目录即系统盘符
  3. for (File file : files) {//getUsableSpace()与 getFreeSpace() 相比,能更准确地估计可实际写入的新数据数。
  4. System.out.println(file.getPath() + " 总容量:" + file.getTotalSpace() + " 可用容量:"
  5. + file.getFreeSpace() + " 已用容量:" + file.getUsableSpace());
  6. }
  7. }

七,获取目录内容

  1. private static void file_demo8() {
  2. File[] files = File.listRoots();//系统根目录即系统盘符
  3. for (File file : files) {//getUsableSpace()与 getFreeSpace() 相比,能更准确地估计可实际写入的新数据数。
  4. System.out.println(file.getPath() + " 总容量:" + file.getTotalSpace() + " 可用容量:"
  5. + file.getFreeSpace() + " 已用容量:" + file.getUsableSpace());
  6. }
  7. }
八,文件过滤器
  返回文件字符数组
  1. // 列出C盘下的java文件
  2. private static void file_demo10() {
  3. File file = new File("C:\\");
  4. String[] fileFilter = file.list(new MyFileNameFilter());// 接收一个实现了FilenameFilter接口的过滤器
  5. for (String str : fileFilter) {
  6. System.out.println(str);
  7. }
  8. }
  1.   public class MyFileNameFilter implements FilenameFilter {
  2.  
  3.  @Override
  4.   public boolean accept(File dir, String name) {
  5.   return name.endsWith(".java");
  6. }
  7.  
  8. }

  返回File文件对象的数组的过滤器

  1. //列出C盘下非隐藏的文件
  2. private static void file_demo11() {
  3. File file = new File("C:\\");
  4. File[] files = file.listFiles(new MyFileFilter());//接收一个实现了FileFilter接口的文件属性过滤器对象的参数
  5. for (File fl : files) {
  6. System.out.println(fl.getName());
  7. }
  8. }
  1. public class MyFileFilter implements FileFilter {
  2. @Override
  3. public boolean accept(File pathname) {
  4. return !pathname.isHidden();
  5. }
  6. }

九,递归列出C盘下某一目录下的所有文件和目录

  1. public static void main(String[] args) throws IOException {
  2. File file = new File("c:\\abc");
  3. listFile(file);
  4. }
  5.  
  6. private static void listFile(File file) {
  7. File[] files = file.listFiles();
  8. for (File fl : files) {
  9. if (fl.isDirectory()) {
  10. System.out.println(fl.getName());
  11. listFile(fl);
  12. } else {
  13. System.out.println(fl.getName());
  14. }
  15. }
  16. }

 

 

Java中的IO流(三)的更多相关文章

  1. Java中的IO流总结

    Java中的IO流总结 1. 流的继承关系,以及字节流和字符流. 2. 节点流FileOutputStream和FileInputStream和处理流BufferedInputStream和Buffe ...

  2. Java中的IO流(五)

    上一篇<Java中的IO流(四)>记录了一下Properties类,此类不属于IO流,它属于集合框架.接下来说一下IO流中的其它流 一,打印流PrintStream PrintStream ...

  3. Java中的IO流(六)

    上一篇<Java中的IO流(五)>把流中的打印流PrintStream,PrintWriter,序列流SequenceInputStream以及结合之前所记录的知识点完成了文件的切割与文件 ...

  4. Java中的IO流(四)

    上一篇<Java中的IO流(三)>把IO流中的文件及目录操作的对象File类记录了一下,本篇把本不属性IO流但又和IO流有关系的一个对象作一下记录,此对象本属于集合框架里的一个子集,即Pr ...

  5. Java中的IO流(二)

    上一篇<Java中的IO流(一)>把学习IO流的字符流作了一下记录,本篇把字节流记录一下. 一,Java中的字节流 Java中的字节流的操作方式与字符流的操作方式大致相同,连方法名都是类似 ...

  6. Java中的IO流之输入流|乐字节

    亲爱的乐字节的小伙伴们,小乐又来分享Java技术文章了.上一篇写到了IO流,这篇文章着重 谈谈输入流,再下次再说输出流. 点击回顾上一篇:乐字节Java之file.IO流基础知识和操作步骤 一. 输入 ...

  7. java中的IO流

    Java中的IO流 在之前的时候我已经接触过C#中的IO流,也就是说集中数据固化的方式之一,那么我们今天来说一下java中的IO流. 首先,我们学习IO流就是要对文件或目录进行一系列的操作,那么怎样操 ...

  8. Java中的IO流大体介绍

    由于Java中的IO流是在是知识点繁多,所以我大约花了1周的时间将其整理起来.但是整理起来后并不是将完事了,我还是要分字节流和字符流来讲述.然后字节流和字符流中还有是否带有缓冲流. 讲述完IO流后我将 ...

  9. Java中的IO流,Input和Output的用法,字节流和字符流的区别

    Java中的IO流:就是内存与设备之间的输入和输出操作就成为IO操作,也就是IO流.内存中的数据持久化到设备上-------->输出(Output).把 硬盘上的数据读取到内存中,这种操作 成为 ...

随机推荐

  1. JS读取粘贴板内容

    1.1     监听onpaste事件 1.1.1 定义和用法 npaste 事件在用户向元素中粘贴文本时触发. 注意: 虽然使用的 HTML 元素都支持 onpaste 事件,但实际上并非支持所有元 ...

  2. Django 模型层之单表操作

    一.单表操作之创建表 在app的models.py文件中创建模型: from django.db import models class Book(models.Model): id = models ...

  3. python 面向对象 【进阶】

    多态 多态跟python没有太大关系,因为python本身原生支持多态. def func(arg):          #多态      print (arg) func(1) func(‘pand ...

  4. Http重要知识点

  5. ubuntu16.04下无法连接网络的bug

    首先介绍下Bug的情况,这个bug纠缠我整整一天,在命令行下ifconfig能够看到ip地址,不过我的不是eth0,而是enps03,然后Ping 本机和ping 网关都能够 ping 通,但是sud ...

  6. 数据库聚焦与非聚焦索引 事务处理 redis innodb引擎(九)

    1 数据库事务处理 一个数据库事务通常包含对数据库进行读或写的一个操作序列 . 当一个事务被提交给了DBMS(数据库管理系统),则DBMS需要确保该事务中的所有操作都成功完成且其结果被永久保存在数据库 ...

  7. 事件循环进阶:macrotask与microtask

    这段参考了参考来源中的第2篇文章(英文版的),(加了下自己的理解重新描述了下), 这里没法给大家演示代码,我就简单说下我的理解吧. promise和settimeout 在一起的时候执行顺序是个有意思 ...

  8. 使用UIDynamicAnimator创建重力感应的View

    使用UIDynamicAnimator创建重力感应的View http://www.raywenderlich.com/zh-hans/52617/uikit-力学教程 详细教程请参考上面的链接,此处 ...

  9. angular2 文件上传

    ng2-file-upload文件上传 1.安装ng2-file-upload模块 npm install ng2-file-upload --save 2.如果使用systemjs打包,需要在配置s ...

  10. 平衡二叉树、B树、B+树、B*树 理解其中一种你就都明白了

    1.平衡二叉树 (1)由来:平衡二叉树是基于二分法的策略提高数据的查找速度的二叉树的数据结构: (2)特点: 平衡二叉树是采用二分法思维把数据按规则组装成一个树形结构的数据,用这个树形结构的数据减少无 ...