当前位置: 首页 > news >正文

Java基础-文件操作

目录

一、File类

1.简述

2.创建File对象

3.文件操作

3.1获取文件信息

3.2 判断文件

3.3 删除文件

3.4 创建文件

二、Files工具类

1.字符操作

2.字节操作


一、File类

1.简述

java.io.File 类是java提供的针对磁盘中文件和目录对象的一个类。代表操作系统的文件(文件、文件夹)。

2.创建File对象

2.1 public File(String pathname): 以pathname为路径创建File对象,可以是绝对路径或者相对路径。

2.2 public File(String parent,String child) 以parent为父路径,child为子路径创建File对象。

2.3 public File(File parent,String child) 根据一个父File对象和子文件路径创建File对象。

小贴士:

1.一个File对象代表指向硬盘中的一个文件或者目录路径(举例,只代表此路径,不代表里面的内容。举例:地址不是房子,File对象指向地址,不是文件本身)

2.无论该路径下是否存在文件或者目录,都不影响File对象的创建。

File f1 = new File("E:\\YuanJiuYuan\\a.txt");//传入一个String path路径
File f1 = new File("E:\\YuanJiuYuan","a.txt");//传入两个路径,分别是父路径和子路径
File f1 = new File(new File("E:\\YuanJiuYuan"),"a.txt");

3.文件操作

3.1获取文件信息

(1)public String getName() :获取文件的名称,带后缀。

(2)public long length() :获取文件长度(即:字节数---真实的大小)。不能获取目录的长度--仅表示当前操作系统为保存目录所涉及的长度。

(3)public long lastModified() :获取最后一次的修改时间,毫秒值 使用new Date(f1.lastModified());// 返回的是当天时间。

import java.io.File;
import java.util.Date;public class Demo01 {public static void main(String[] args) {// 存在的目录路径// 小贴士:// 1. 一个 File 对象代表指向硬盘中的一个文件或者目录路径(举例,只代表此路径,不代表里面的内容。举例:地址不是房子,File 对象指向地址// 2. 无论该路径下是否存在文件或者目录,都不影响 File 对象的创建。File f1 = new File("E:\\YuanJiuYuan");System.out.println(f1);// 存在的文件路径File f2 = new File("E:\\YuanJiuYuan\\a.txt");System.out.println(f2);// 不存在的目录路径File f3 = new File("E:\\YuanJiuYuan\\aaa");System.out.println(f3);// 不存在的文件路径File f4 = new File("E:\\YuanJiuYuan\\a.jpg");System.out.println(f4);String str="文件名为%s,文件大小为%d,文件最后一次修改时间为%s\n";// public String getName() :获取文件的名称,带后缀// public long length() :获取文件长度(即:字节数---真实的大小)。不能获取目录的长度--仅表示当前操作系统为保存目录所涉及的长度。// public long lastModified() :获取最后一次的修改时间,毫秒值//使用new Date(f1.lastModified());// 返回的是当天时间System.out.printf(str, f1.getName(), f1.length(), new Date(f1.lastModified()));System.out.printf(str, f2.getName(), f2.length(), new Date(f2.lastModified()));System.out.printf(str, f3.getName(), f3.length(), new Date(f3.lastModified()));System.out.printf(str, f4.getName(), f4.length(), new Date(f4.lastModified()));}
}

(4)public String getAbsolutePath():获取文件的绝对路径 。

(5)public String getPath() :获取路径,返回定义文件时使用的路径。

(6)public String getCannoicalPath() 获取规范路径。

import java.io.File;
import java.io.IOException;public class Demo02 {public static void main(String[] args) throws IOException {File f1 = new File(new File("E:\\YuanJiuYuan"),"a.txt");System.out.println("文件绝对路径:"+f1.getAbsolutePath());System.out.println("文件使用路径:"+f1.getPath());System.out.println("文件规范路径:"+f1.getCanonicalPath());//.表示当前路径,..表示当前路径的上层路径File f2=new File(".\\a.txt");System.out.println("文件绝对路径:"+f2.getAbsolutePath());System.out.println("文件使用路径:"+f2.getPath());System.out.println("文件规范路径:"+f2.getCanonicalPath());}
}
//运行结果
//文件绝对路径:E:\YuanJiuYuan\a.txt
//文件使用路径:E:\YuanJiuYuan\a.txt
//文件规范路径:E:\YuanJiuYuan\a.txt//文件绝对路径:E:\Idea\Test\.\a.txt
//文件使用路径:.\a.txt
//文件规范路径:E:\Idea\Test\a.txt

(7)public String[] list() :获取指定目录下的所有文件或者文件目录的名称数组---注意返回类型。

(8) public File[] listFiles() :获取指定目录下的所有文件或者目录的File数组----返回时File。

注意:

1.在使用时要确认其是一个目录(如果是文件返回为null,如果没有权限访问此目录返回也是null)。

2.当文件对象代表一个空文件夹时 返回一个长度为0的数组。

3.当文件对象是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回。

4.单文件对象是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放入File数组中放回,包含隐藏文件。

import java.io.File;
import java.util.Arrays;public class Demo07 {public static void main(String[] args) {//public String[] list() :获取指定目录下的所有文件或者文件目录的名称数组---注意返回类型File f1=new File("E:\\YuanJiuYuan");String[] names=f1.list();System.out.println(Arrays.toString(names));//public File[] listFiles() :获取指定目录下的所有文件或者目录的File数组----返回时FileFile[] files=f1.listFiles();System.out.println(Arrays.toString(files));}
}
import java.io.File;public class Demo08 {public static void main(String[] args) {File f1=new File("E:\\YuanJiuYuan");showFiles(f1);}//获取文件夹下的所有文件或目录信息public static void showFiles(File file){File[] files=file.listFiles();for (File f:files) {if (f.isDirectory()){System.out.println("[目录]"+f.getName());showFiles(f);//递归}else{System.out.println("[文件]"+f.getName()+"[大小]"+f.length());}}}
}

3.2 判断文件

(1)public boolean exists() :判断是否存在。

(2)public boolean isDirectory():判断是否是目录 。

(3)public boolean isFile() :判断是否是文件。

import java.io.File;public class Demo03 {public static void main(String[] args) {//存在的文件和目录File f1=new File("E:\\YuanJiuYuan\\ziliao");File f2=new File("E:\\YuanJiuYuan\\ziliao\\a.txt");//不存在文件和目录File f3=new File("E:\\YuanJiuYuan\\ziliao\\aaa");File f4=new File("E:\\YuanJiuYuan\\ziliao\\a.jpg");//判断是否存在String str="[%s]是否存在%s,是否存在文件%s,是否存在目录%s\n";System.out.printf(str,f1.getName(),f1.exists(),f1.isFile(),f1.isDirectory());System.out.printf(str,f2.getName(),f2.exists(),f2.isFile(),f2.isDirectory());System.out.printf(str,f3.getName(),f3.exists(),f3.isFile(),f3.isDirectory());System.out.printf(str,f4.getName(),f4.exists(),f4.isFile(),f4.isDirectory());}
}
//运行结果
//[ziliao]是否存在false,是否存在文件false,是否存在目录false
//[a.txt]是否存在false,是否存在文件false,是否存在目录false
//[aaa]是否存在false,是否存在文件false,是否存在目录false
//[a.jpg]是否存在false,是否存在文件false,是否存在目录false

(4)public boolean canRead() :判断是否可读。

(5) public boolean canWrite() :判断是否可写 。

(6) public boolean isHidden() :判断是否隐藏。

public class Demo04 {public static void main(String[] args) {// public boolean canRead() :判断是否可读// public boolean canWrite() :判断是否可写// public boolean isHidden() :判断是否隐藏File f1=new File("E:\\YuanJiuYuan\\ziliao\\a.txt");System.out.println("是否可读:"+f1.canRead());System.out.println("是否可写:"+f1.canWrite());System.out.println("是否隐藏:"+f1.isHidden());}
}
//运行结果
//是否可读:false
//是否可写:false
//是否隐藏:false

3.3 删除文件

(1)public boolean delete(): 删除此抽象路径名表示的文件或者文件夹。

        注意:delete方法只删除文件和空文件夹,是直接删除不走回收站。

public class Demo05 {public static void main(String[] args) {File f1=new File("E:\\YuanJiuYuan\\ziliao\\a.txt");File f2=new File("E:\\YuanJiuYuan\\ziliao");//删除文件时,要求文件必须存在才能进行删除boolean b1=f1.delete();System.out.println("f1是否删除成功:"+b1);//只能删除存在的空目录//如果目录里有东西,则删除失败boolean b2=f2.delete();System.out.println("f2是否删除成功:"+b2);}
}

3.4 创建文件

(1)public boolean createNewFile() 创建文件。若文件存在,则不创建,返回false。

(2)public boolean mkdir() : 创建文件目录。如果此文件目录存在,就不创建了。 如果此文件目录的上层目录不存在,也不创建。

(3)public boolean mkdirs() : 创建文件目录。如果上层文件目录不存在,一并创建。

import java.io.File;
import java.io.IOException;public class Demo06 {public static void main(String[] args) throws IOException {File f1=new File("E:\\YuanJiuYuan\\a.txt");File f2=new File("E:\\YuanJiuYuan\\ziliao");File f3 = new File("E:\\YuanJiuYuan\\aaa\\资料");//1.创建文件createNewFile(),文件路径存在,文件不存在的时候为trueboolean b1 = f1.createNewFile();System.out.println("创建f1对象是否成功:" + b1);//2.创建文件夹,当文件夹不存在,且父路径存在的时候就可以创建boolean b2 = f2.mkdir();System.out.println("创建f2对象是否成功:" + b2);//3.创建文件夹,如果父路径不存在,则一并创建boolean b3 = f3.mkdirs();System.out.println("创建f3对象是否成功:" + b3);}
}

二、Files工具类

1.字符操作

(1)readAllLine(Path path) 按行读取指定路径中的内容。

(2)Path write(Path path, List<String> list) 写入字节到指定的路径。

2.字节操作

(1)byte[] readAllBytes(Path path) 读取文件中的所有字节。

(2)Path write(Path path, byte[] bytes) 写入字节到指定的路径。

public class Demo09 {public static void main(String[] args) throws IOException {Path p1=new File("E:\\YuanJiuYuan\\a.txt").toPath();//byte[] readAllBytes(Path path)  读取文件中的所有字节。byte[] bytes= Files.readAllBytes(p1);System.out.println(Arrays.toString(bytes));//readAllLine(Path path)  按行读取指定路径中的内容//字符读的方式,只能读取纯文本类型List<String> list=Files.readAllLines(p1);System.out.println(list);}
}
public class Demo10 {public static void main(String[] args) throws IOException {Path p1=new File("E:\\YuanJiuYuan\\a.txt").toPath();// Path write(Path path, byte[] bytes) 写入字节到指定的路径byte[] bytes="我本将心向明月".getBytes();Files.write(p1,bytes);ArrayList<String> list =new ArrayList<>();for (int i = 0; i <30 ; i++) {list.add(UUID.randomUUID().toString());}// Path write(Path path, List<String> list) 写入字节到指定的路径Files.write(p1,list, StandardOpenOption.APPEND);System.out.println("写出结束");}
}
public class Demo11 {public static void main(String[] args) throws IOException {
//        byte[] bytes= Files.readAllBytes(Paths.get("C:\\Users\\mupen\\Pictures\\rose.jpg"));
//        System.out.println("读取结束");
//
//        Files.write(new File("E:\\YuanJiuYuan\\copy.jpg").toPath(),bytes);
//        System.out.println("写出结束");Files.copy(Paths.get("C:\\Users\\mupen\\Pictures\\rose.jpg"),new File("E:\\YuanJiuYuan\\copy1.jpg").toPath(),StandardCopyOption.REPLACE_EXISTING);System.out.println("复制结束");}
}

http://www.lryc.cn/news/600735.html

相关文章:

  • spring Could 高频面试题
  • 面试问题总结——关于OpenCV(二)
  • 详解力扣高频SQL50题之619. 只出现一次的最大数字【简单】
  • 《使用Qt Quick从零构建AI螺丝瑕疵检测系统》——6. 传统算法实战:用OpenCV测量螺丝尺寸
  • 人工智能之数学基础:概率论之韦恩图的应用
  • Java 镜像减肥记:Docker 多阶段构建全攻略
  • 统计学08:概率分布
  • 【SSM】第二章 网上蛋糕项目商城-首页
  • lottie 动画使用
  • MySQL数据库本地迁移到云端完整教程
  • 《每日AI-人工智能-编程日报》--2025年7月26日
  • 使用Netty搭建一个网络聊天室
  • Java面试题及详细答案120道之(041-060)
  • 图片查重从设计到实现(5)Milvus可视化工具
  • 力扣872. 叶子相似的树
  • 如何在 Ubuntu 24.04 或 22.04 中创建自定义 Bash 命令
  • Sklearn 机器学习 数值指标 entropy熵函数
  • 认识泛型、泛型类和泛型接口
  • 好的编程语言设计是用简洁清晰的原语组合复杂功能
  • 消息缓存系统
  • JavaEE初阶第十一期:解锁多线程,从 “单车道” 到 “高速公路” 的编程升级(九)
  • 《计算机组成原理与汇编语言程序设计》实验报告二 基本数字逻辑及汉字显示
  • 告别配置混乱!Spring Boot 中 Properties 与 YAML 的深度解析与最佳实践
  • 非定长滑动窗口(持续更新)
  • Netty中AbstractChannelHandlerContext源码分析
  • C++连接MySQL完整教程
  • easy-llm-cli的安装和使用
  • Ubuntu安装node-red
  • 广东省省考备考(第五十七天7.26)——数量、言语(强化训练)
  • 【CTF-PWN】【攻防世界题目pwnstack】python攻击脚本ret(checksec、pwngdb、IDA)(含“/bin/sh“)