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

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.xdnf.cn/news/16392.html

相关文章:

  • Spring boot Grafana优秀的监控模板
  • 生猪产业新生态:结构调整与种养结合,筑牢农业强国根基
  • HashMap(JDK1.7、JDK1.8)原理与结构分析与synchronizedMap()
  • 【LeetCode刷题指南】--队列实现栈,栈实现队列
  • C 语言详解:特性、应用与发展
  • GRE和MGRE综合实验
  • DMDSC安装部署教程
  • 基于cooragent的旅游多智能体的MCP组件安装与其开发
  • Android Jetpack 组件库 ->Jetpack Navigation (下)
  • 从治理到共情——平台伦理的乡村共建之路
  • 在 C# 中,问号 ? 的一些作用
  • HTML初学者第五天
  • 启动式service
  • 强化学习(第三课第三周)
  • 在 Scintilla 中为 Squirrel 语言设置语法解析器的方法
  • Kubernetes 配置管理
  • odoo代码分析(一)
  • 认识泛型、泛型类和泛型接口
  • 大语言模型 LLM 通过 Excel 知识库 增强日志分析,根因分析能力的技术方案(2):LangChain + LlamaIndex 实现
  • Java学习第七十七部分——JVM运行时数据区
  • Java同步锁性能优化:15个高效实践与深度解析
  • 7月26号打卡
  • C++/CLI与标准C++的语法差异(一)
  • ASP.NET Core MVC中taghelper的ModelExpression详解
  • Spring Boot 3 如何整合 MinIO 实现分布式文件存储?
  • MyBatis-Plus 通用 Service 详解:IService 与 CRUD 操作全解析
  • PYTHON从入门到实践-15数据可视化
  • 【资讯】2025年软件行业发展趋势:AI驱动变革,云原生与安全成核心
  • PHP框架之Laravel框架教程:1. laravel搭建
  • 亚马逊测评采购:如何打造安全的环境,技术基础关键