Java中使用File类创建文件方法总结
目录
- Java 中的 File 类
- 一、文件(File)
- 定义
- 二、File 类的介绍
- 1 创建文件对象的相关构造器
- 2 createNewFile() 的作用
- 3 获取文件相关信息的常用方法
- 4 目录的操作和文件的删除
- 总结
Java 中的 File 类
在 Java 中,文件和文件流是处理数据输入/输出的两个核心概念,它们是 Java I/O 操作的基础。
一、文件(File)
定义
- 文件是操作系统中的存储单元,用于持久化保存数据(如文本、图片、二进制数据等)。
- 在 Java 中,
java.io.File
类(或 Java 7+ 的java.nio.file.Path
)用于表示文件或目录的抽象路径。 - 文件本身不存储数据,而是通过路径指向磁盘上的具体数据。
二、File 类的介绍
1 创建文件对象的相关构造器
new File(File parent, String child)
:将父路径(字符串形式)和子路径拼接成一个完整路径。自动处理路径分隔符(如 Windows 的\
或 linux 的/
)。// 示例1:拼接父路径和子文件 String parentDir = "C:/Users/Test"; String childFile = "data.txt"; File file = new File(parentDir, childFile); //会在2个目录之间自动加上'/'或'\' System.out.println(file.getPath()); // 输出: C:\Users\Test\data.txt // 示例2:拼接多级目录 File dir = new File("src", "main/java/com/example"); System.out.println(dir.getPath()); // 输出: src\main\java\com\example
new File(String pathname)
:直接通过路径名字符串(绝对路径或相对路径)创建File
对象。路径可以是文件或目录。// 示例1:使用绝对路径 File file1 = new File("C:/Users/Test/example.txt"); System.out.println(file1.getPath()); // 输出: C:\Users\Test\example.txt // 示例2:使用相对路径(相对于当前项目根目录) File file2 = new File("data/config.json"); System.out.println(file2.getPath()); // 输出: data\config.json
new File(File parent, String child)
:使用一个已有的File
对象表示父路径,再拼接子路径。比字符串拼接更灵活,避免路径分隔符错误。// 示例1:基于父目录对象创建子文件 File parentDir = new File("C:/Users/Test"); File childFile = new File(parentDir, "logs/app.log"); System.out.println(childFile.getPath()); // 输出: C:\Users\Test\logs\app.log // 示例2:链式拼接目录 File baseDir = new File("projects"); File srcDir = new File(baseDir, "src"); File mainFile = new File(srcDir, "Main.java"); System.out.println(mainFile.getPath()); // 输出: projects\src\Main.java
new File(URI rui)
:通过 URI(统一资源标识符) 创建File
对象。URI 格式需符合file:
协议(如file:/C:/test/data.txt
)。import java.net.URI; // 示例1:使用URI创建File对象 try { URI uri = new URI("file:/C:/Users/Test/example.txt"); File file = new File(uri); System.out.println(file.getPath()); // 输出: C:\Users\Test\example.txt } catch (Exception e) { e.printStackTrace(); } // 示例2:处理空格和特殊字符 //URI 中的特殊字符(如空格)需用 %20 表示,构造方法会解码后转换为实际路径。 URI uri2 = URI.create("file:/C:/My%20Documents/report.pdf"); File file2 = new File(uri2); System.out.println(file2.getPath()); // 输出: C:\My Documents\report.pdf
总结对比
构造方法 | 典型使用场景 | 优点 |
---|---|---|
File(String pathname) | 直接指定完整路径 | 简单直接,适合已知路径 |
File(String parent, String child) | 动态拼接父路径和子路径 | 避免手动处理路径分隔符 |
File(File parent, String child) | 基于已有的 File 对象构建子路径 | 支持链式操作,路径更安全 |
File(URI uri) | 从 URI 格式创建(如编码后的路径) | 自动处理特殊字符和协议 |
注意 :File 对象只是一个路径的抽象:创建 File 类对象,并不会真的在我们电脑上对应的目录下面创建文件,如果需要实际的创建文件需要显式的调用。
- 构造
File
对象(如new File("a.txt")
)不会自动创建物理文件,仅表示路径。 - 必须通过显式调用 createNewFile() 或其他写入操作(如
FileOutputStream
写入数据)才能实际生成文件。
2 createNewFile() 的作用
功能:
- 显式创建一个空的文件(仅当文件不存在时)。
- 如果文件已存在,则返回
false
,不会覆盖原有内容。
语法:
File file = new File("example.txt"); boolean isCreated = file.createNewFile(); // 返回 true 表示创建成功
- 注意事项:
需要处理 IOException:
如果父目录不存在或没有写入权限,会抛出异常。
必须用 try-catch 包裹或声明 throws。
import java.io.File; import java.io.IOException; public class CreateFileDemo { public static void main(String[] args) { File file = new File("test.txt"); try { if (file.createNewFile()) { System.out.println("文件创建成功"); } else { System.out.println("文件已存在"); } } catch (IOException e) { e.printStackTrace(); } } }
父目录必须存在:
如果路径中的父目录不存在,
createNewFile()
会失败。需先调用
file.getParentFile().mkdirs()
创建父目录:File file = new File("nonexistent_dir/data.txt"); //File 对象仅表示路径,不检查文件是否存在!需通过 exists() 方法验证。 if (!file.getParentFile().exists()) { file.getParentFile().mkdirs(); // 创建所有缺失的父目录 } file.createNewFile();
3 获取文件相关信息的常用方法
- getName()
- 作用:返回文件或目录的名称(不包含路径)。
- 示例:路径为
C:/test/file.txt
时,返回file.txt
;若为目录C:/test
,返回test
。
- getAbsolutePath()
- 作用:返回文件或目录的绝对路径字符串。
- 注意:无论
File
对象是相对路径还是绝对路径创建,均解析为完整路径。例如,相对路径file.txt
可能返回/home/user/file.txt
。
- getParent()
- 作用:返回父目录的路径(字符串形式)。若无父目录(如根目录或单文件相对路径),则返回
null
。 - 示例:路径为
C:/test/file.txt
时,返回C:/test
;路径为file.txt
时,返回null
。
- 作用:返回父目录的路径(字符串形式)。若无父目录(如根目录或单文件相对路径),则返回
- length()
- 作用:返回文件的字节大小。若文件不存在或为目录,通常返回
0L
。 - 注意:需先通过
exists()
和isFile()
验证目标是否为有效文件。
- 作用:返回文件的字节大小。若文件不存在或为目录,通常返回
- exists()
- 作用:检查文件或目录是否存在,返回布尔值。
- 注意:可能受权限限制影响(如无访问权限时返回
false
)。
- isFile()
- 作用:判断是否为标准文件(非目录或符号链接),返回布尔值。
- 注意:若路径不存在,返回
false
。
- isDirectory()
- 作用:判断是否为目录,返回布尔值。
- 注意:若路径不存在,返回
false
。
import java.io.File; import java.io.IOException; public class Example { public static void main(String[] args) { read(); } public static void read() { //1.getName() //路径指向文件 File file1 = new File("D:/0.学习/File_Test/read.txt"); System.out.println(file1.getName());// 输出 read.txt //路径为目录 File file2 = new File("D:/0.学习/File_Test"); System.out.println(file2.getName());// 输出 File_Test //2.getAbsolutePath() //以绝对路径创建 File 对象 File file3 = new File("D:/0.学习/File_Test/read3.txt"); //输出 D:/0.学习/File_Test/javascriptread3.txt System.out.println(file3.getAbsolutjsePath()); //以相对路径创建 File 对象 File file4 = new File("read4.txt"); //输出绝对路径 D:\0.学习\java笔记\java_Code\TankGame\read4.txt System.out.println(file4.getAbsolutePath()); //3.getParent() //File file3 = new File("D:/0.学习/File_Test/read3.txt"); //输出 D:\0.学习\File_Test System.out.println(file3.getParent()); //根目录或单文件相对路径,返回 null File file5 = new File("D:"); System.out.println(file5.getParent());//null //4.length() File file6 = new File("D:/0.学习/File_Test/read6.txt"); System.out.println(file6.length()); try { file6.createNewFile(); } catch (IOException e) { throw new RuntimeException(e); } System.out.println(file6.length()); } }
4 目录的操作和文件的删除
1. mkdir()
- 作用 :创建单层目录(仅当父目录存在时才能成功)。
- 返回值 :
boolean
:目录创建成功返回true
,失败返回false
。 - 适用场景 :当明确知道父目录已经存在时,直接创建js子目录。
2. mkdirs()
- 作用 :创建多层目录(自动创建路径中所有不存在的父目录)。
- 返回值 :
boolean
:所有目录创建成功返回true
,失败返回false
。 - 适用场景 :不确定父目录是否存在时,直接创建完整路径。
3. delete()
- 作用 :删除文件或空目录(非空目录无法删除)。
- 返回值 :
boolean
:删除成功返回true
,失败返回false
。 - 适用场景 :删除文件或空目录。
import java.io.File; import java.io.IOException; public class Example { public static void main(String[] args) { dir(); } public static void dir() { //1.mkdir() 创建单层目录 File file1 = new File("D:/0.学习/FiliPEiOHaVVUe_Test/demo1"); //要求父目录必须存在,否则无法创建成功 //即,D:/0.学习/File_Test 必须存在才能成功创建 demo1 目录 boolean mkdir = file1.mkdir(); if(mkdir) { System.out.println("创建成功"); } else { System.out.println("创建失败"); } //2.mkdirs() 创建多层目录 File file2 = new File("D:/0.学习/File_Test/demo2"); //如果路径中有不存在的自动创建 boolean mkdirs = file2.mkdirs(); //3.delete() 删除文件或空目录(非空目录无法删除) //删除 demo2 空目录 boolean delete = file2.delete(); File file3 = new File("D:/0.学习/File_Test/dpythonemo1/dir.txt"); try { file3.createNewFile(); } catch (IOException e) { throw new RuntimeException(e); } //删除 dir.txt 文件 file3.delete(); } }
总结
到此这篇关于Java中使用File类创建文件方法的文章就介绍到这了,更多相关Java用File类创建文件内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
精彩评论