一 概念
什么是文件?
文件就是保存数据的地方。
二 文件流
文件在程序中是以流的形式来操作的。
流——数据在数据源(文件)和程序(内存)之间经历的路径。
- 输入流:数据从数据源(文件)到程序(内存)的路径。
- 输出流:数据从程序(内存)到数据源(文件)的路径。
- 类比:喝水是输入流(水从被子到嘴巴),吐出来是输出流(水从嘴巴到被子),嘴是内存,被子是文件。以人为参照物,进入人体的是输入流,排出人体的是输出流。
File类的API可以查阅文档或者直接进入源码查看。
JDK 8 官方API:https://docs.oracle.com/javase/8/docs/api/
文件常用操作
创建文件对象相关的构造器和方法
new File(String pathname);
根据路径构建一个File对象。
new File(File parent,String child);
根据父目录文件 + 子路径构建。
new File(String parent,String child);
根据父目录 + 子路径构建。
示例代码:
package com.io.demo.file;
import org.junit.jupiter.api.Test;
import java.io.File;
import java.io.IOException;
public class FileDemo {
@Test
public void createFile1() {
File file = new File("d:\\file.txt");
try {
boolean result = file.createNewFile();
if(result){
System.out.println("file create success!");
}else{
System.out.println("file create fail!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void createFile2(){
File file = new File("d:\\","file2.txt");
try {
boolean result = file.createNewFile();
if(result){
System.out.println("file2 create success!");
}else{
System.out.println("file2 create fail!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void createFile3(){
File file = new File("d:\\");
File file3 = new File(file,"file3.txt");
try {
boolean result = file3.createNewFile();
if(result){
System.out.println("file3 create success!");
}else{
System.out.println("file3 create fail!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
获取文件的相关信息
File类的相关方法。
示例代码:
@Test
public void fileInfo(){
File file = new File("d:\\file.txt");
System.out.println("文件名:"+file.getName());
System.out.println("文件路径:"+file.getAbsolutePath());
System.out.println("文件父级目录:"+file.getParent());
System.out.println("文件大小:"+file.length()+" 字节");
System.out.println("文件是否存在:"+file.exists());//true
System.out.println("是不是一个文件:"+file.isFile());//true
System.out.println("是不是一个目录:"+file.isDirectory());//false
}
输出结果:
文件名:file.txt
文件路径:d:\file.txt
文件父级目录:d:\
文件大小:0 字节
文件是否存在:true
是不是一个文件:true
是不是一个目录:false
目录的操作和文件删除
- mkdir 创建一级目录
- mkdirs 创建多级目录
- delete 删除空目录或文件
示例代码:
/**
* 创建单目录
*/
@Test
public void mkdir(){
File file = new File("d:\\path01");
boolean result = file.mkdir();
if(result){
System.out.println("目录创建成功");
}else{
System.out.println("目录创建失败");
}
}
/**
* 创建多级目录
*/
@Test
public void mkdirs(){
File file = new File("d:\\path01\\path02\\path03");
boolean result = file.mkdirs();
if(result){
System.out.println("目录创建成功");
}else{
System.out.println("目录创建失败");
}
}
/**
* 删除文件
*/
@Test
public void deleteFile(){
String filePath = "d:\\file.txt";
File file = new File(filePath);
if(file.exists()){
boolean result = file.delete();
if(result){
System.out.println("删除成功");
}else{
System.out.println("删除失败");
}
}else{
System.out.println("文件不存在");
}
}
/**
* 删除空目录
* 目录 path01 如果是空目录,则可以删除成功;否则会失败。
*/
@Test
public void deleteDirectory(){
String filePath = "d:\\path01";
File file = new File(filePath);
if(file.exists()){
boolean result = file.delete();
if(result){
System.out.println("删除成功");
}else{
System.out.println("删除失败");
}
}else{
System.out.println("文件目录不存在");
}
}