一、 File类概述

  • 一个代表文件或目录的类
  • 目录 : 只是将一个字符串标记为一个目录  , 路径所占的内存空间大小为0。
二、 重要方法
  • 创建

    • createNewFile() : 文件不存在时,创建一个文件 , 要求存放这个文件的目录真实存在   ,不能创建目录。
    • mkdri() : 创建目录
    • mkdris() : 创建多级目录
  • 删除
    • deleted() : 删除目录文件
  • 判断
    • isDrictory() : 判断是否是一个目录
    • isFile () : 判断是否是一个文件
    • canWrite() : 判断文件是否可写
    • canReade() : 判断文件是否可读
    • exists() ; 判断文件是否真实存在
    • canExecute() : 判断文件是否可执行
    • isHidden () : 判断文件是否隐藏
  • 获取
    • getName() :  获取文件的名字 。  底层实现: 获取路径中“/"最后一次出现的位置,从这个位置的下一位截取后返回文件名。
    • listFiles() : 获取目录中所有目录和文件组成的集合
    • getAbsoluteFile() : 获取这个文件的绝对路径
    • getParent() : 获取父路径  , 底层实现: 获取路径中“/"最后一次出现的位置,从0到这个位置开始截取。
    • getPath() : 获取路径参数 。   参数传进去是什么样子,获取到就是什么样子
    • lastModifie() : 获取最后一次修改时间
    • list() : 获取当前目录下所以文件和目录组成的数组
  • 设置
    • setWriteable() : 设置文件权限为可写 。
    • renameTo() : 重命名
  • 练习:
    /**文件练习* 用递归的方式删除一个目录及目录下所有的文件* */
    public class FileTest_01 {public static void main(String[] args) {//C:\\Users\\user\\Desktop\\杂七杂八-定时清理 - 副本File f = new File("C:\\Users\\user\\Desktop\\杂七杂八-定时清理 - 副本");delFile(f);System.out.println("执行完成");}public  static void delFile(File f){//判断参数是否为空if(f == null){throw new NullPointerException("该路径为错误路径");} //判断是否是一个目录if(f.isDirectory()){File[] listFiles = f.listFiles();for(File ff : listFiles){delFile(ff);}}//删除当前目录f.delete();}
    }
    
  • 练习:
    /** 记录某一种格式文件的个数* * */
    public class FileTest_02 {private static int count  = 0; public static void main(String[] args) {
    //      C:\\Users\\user\\Desktop\\杂七杂八-定时清理 - 副本File f = new File("C:\\Users\\user\\Desktop\\笔记 - 副本");getCount(f);System.out.println("该目录下txt文件的个数为: "+count);}private static void getCount(File f) {//判断路径是否为空if(f == null){throw new NullPointerException("该路径为错误路径");}//判断是否是一个 目录if(f.isDirectory()){File[] listFiles = f.listFiles();for(File ff : listFiles){getCount(ff);}}else{//如果是文件  ,判断文件格式  ,并计数String name  = f.getName();if(name.endsWith(".txt")){count++;}} }
    }
    
  • 练习:
    /** 提取一个目录下所有的某一格式的文件* */
    public class FileTest_03 {private static File toFile = new File("C:\\Users\\user\\Desktop\\哈哈");
    //  private static File toFile1 = new File("C:\\Users\\user\\Desktop\\哈哈2");public static void main(String[] args) {File f = new File("C:\\Users\\user\\Desktop\\笔记 - 副本 (3)");extr(f);System.out.println("执行完毕!");}private static void extr(File f) {//判断文件是否为空if(f == null){throw new NullPointerException("该路径为错误路径");}//判断是否是一个目录if(f.isDirectory()){File[] listFiles = f.listFiles();for(File ff : listFiles){extr(ff);}}else{//如果不是目录 则判断文件类型并挪动if(f.getName().endsWith(".txt")){//获取文件真正的名字String name = f.getName();int index = name.lastIndexOf(".");String realName = name.substring(0, index);//过滤目标目录  判断是否有重名文件FilenameFilter filter = new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {return name.matches(realName+"\\d*\\.txt");}};File[] list = toFile.listFiles(filter);System.out.println(list.length);//开始挪动f.renameTo(new File(toFile , realName+(list.length>0?list.length:"")+".txt"));}}}
    }
    
三、RandomAccessFile
  • 一个可以对文件进行读写的类  ----    需要给指定的对象指定对应的权限
  • 操作文件时实际上是把这个文件看做一个大型的字节数组 , 默认从第0为开始操作。
  • 示例:
    public class RandomAccessFileDemo1 {public static void main(String[] args) throws Exception {// r --- 读取// w --- 写入// d --- 同步更新// 如果文件不存在,则创建该文件// 如果文件已存在,直接操作该文件RandomAccessFile raf = new RandomAccessFile("E:\\a.txt", "rw");// 跳过指定的字节个数raf.seek(7);// 写出数据raf.write("abc".getBytes());// 将指针归零raf.seek(0);// 表示读取一个字节---如果读取到文件的末尾会返回一个-1// int i = raf.read();// System.out.println(i);// int i = -1;//// while ((i = raf.read()) != -1) {// System.out.println(i);// }// 构建了缓冲区byte[] bs = new byte[8];int len = -1;// read(byte[] bs)---返回值表示读取到的字节个数while ((len = raf.read(bs)) != -1) {System.out.println(new String(bs, 0, len));}// 当一个RandomAccessFile对象在操作这个文件的时候,不允许别的对象操作raf.close();}}
    
  • 练习:
    /** 复制文件* */
    public class RandomAccessFileTest_01 {public static void main(String[] args) throws IOException {//源文件File of = new File("C:\\Users\\user\\Desktop\\哈哈\\1、Django之url函数.txt");//目标文件File nf = new File("C:\\Users\\user\\Desktop\\暂存\\1.txt");//创建RandomAccessFile对象并指向源文件RandomAccessFile rafo = new RandomAccessFile(of, "rw");//创建RandomAccessFile对象并指向新文件RandomAccessFile rafn = new RandomAccessFile(nf, "rw");//构建缓冲区byte[] bs = new byte[1024*1024*15];int len = -1;//读取文件while((  len = rafo.read(bs)) != -1){//将读取到的字节流写入到目标文件中rafn.write(bs, 0, len);}//关闭流资源rafn.close();rafo.close();System.out.println("复制完毕");}
    }
    

Java 文件操作 File 及 RandomAccessFile相关推荐

  1. Java 文件操作-File

    1.File文件操作 java.io.File用于表示文件(目录),也就是说程序员可以通过File类在程序中操作硬盘上的文件和目录.File类只用于表示文件(目录)的信息(名称.大小等),不能对文件的 ...

  2. 读取Java文件到byte数组的三种方式及Java文件操作大全(包括文件加密,String加密)

    读取Java文件到byte数组的三种方式 package zs;import java.io.BufferedInputStream; import java.io.ByteArrayOutputSt ...

  3. Java文件操作源码大全

    Java文件操作源码大全 1.创建文件夹 5 2.创建文件 5 3.删除文件 5 4.删除文件夹 6 5.删除一个文件下夹所有的文件夹 7 6.清空文件夹 8 7.读取文件 8 8.写入文件 9 9. ...

  4. Java文件操作大全(绝对的经典,值得收藏!)

    Java文件操作 //1.创建文件夹 //import java.io.*; File myFolderPath = new File(str1); try { if (!myFolderPath.e ...

  5. 【Java文件操作(七)】序列化:将自定义类写入文件

    我的博客--Java文件操作系列 [Java文件操作(一)]递归打印文件目录 [Java文件操作(二)]删除文件夹,但保留其内部文件 [Java文件操作(三)]递归复制文件夹内所有文件 [Java文件 ...

  6. 【Java文件操作(六)】借助内存复制图片:ByteArrayOutputStream\ByteArrayInputStream\FileOutputStream\FileInputStream辨析

    我的博客--Java文件操作系列 [Java文件操作(一)]递归打印文件目录 [Java文件操作(二)]删除文件夹,但保留其内部文件 [Java文件操作(三)]递归复制文件夹内所有文件 [Java文件 ...

  7. 【Java文件操作(三)】递归复制文件夹内所有文件

    我的博客--Java文件操作系列 [Java文件操作(一)]递归打印文件目录 [Java文件操作(二)]删除文件夹,但保留其内部文件 [Java文件操作(三)]递归复制文件夹内所有文件 [Java文件 ...

  8. 【Java文件操作(一)】递归打印文件目录

    我的博客--Java文件操作系列 [Java文件操作(一)]递归打印文件目录 [Java文件操作(二)]删除文件夹,但保留其内部文件 [Java文件操作(三)]递归复制文件夹内所有文件 [Java 文 ...

  9. java文件操作和_JAVA文件操作类和文件夹的操作

    JAVA文件操作类和文件夹的操作 package com.gamvan.tools; import java.io.BufferedReader; import java.io.File; impor ...

最新文章

  1. 自底向上构建知识图谱全过程
  2. DisplayPageBoundaries 打开word后自动将页面间空白隐藏 (auto+定时器)
  3. 14.并发与异步 - 2.任务Task -《果壳中的c#》
  4. POJ-2777-CountColor(线段树,位运算)
  5. LinuxGPIO操作和MTK平台GPIO
  6. c# 事件和委托的区别,使用事件的好处
  7. SpringSecurity动态加载用户角色权限实现登录及鉴权
  8. ssrs 生成pdf_在SSRS报告中生成热图的可用选项
  9. jq使用教程04_高校版教程
  10. Iar新建工程配置使用教程
  11. 高数_证明_级数收敛的莱布尼茨判别法
  12. Linux入门系列课程一
  13. google aviator:轻量级Java公式引擎
  14. mac 安装typescript
  15. 常见的27个电源符号
  16. 武汉光谷国际人工智能产业论坛之学习
  17. 瑞幸咖啡新获2.5亿美元融资背后
  18. 什么是Linux发行版 以及各发行版的区别
  19. 荣耀6x升级Android8省电,HONOR 荣耀 畅玩 6X 手机升级EMUI8.0,怎一个“爽”字了得?...
  20. 【调剂】安徽理工大学矿业工程学院接收调剂学硕研究生

热门文章

  1. Oracle 的一些语句
  2. 疯狂python讲义pdf_火了!她说:“请给我推荐一本Python书!”
  3. 实验7.3 字符串 7-7 输出大写英文字母
  4. java 多线程不安全_多线程并发为什么不安全
  5. Java黑皮书课后题第9章:**9.12(几何:交点)假设两条线段相交。第一条线段的两个端点是(x1, y1)和(x2, y2),第二条线段的两个端点是(x3, y3)和(x4, y4)
  6. Confluence 实现公司wiki【转】
  7. Redis入门(二)安装和基本操作
  8. 初步学习大数据——设置虚拟机固定ip地址
  9. SQL Server 中系统视图sysobjects中type字段的说明
  10. [BZOJ 2200][Usaco2011 Jan]道路和航线 spfa+SLF优化