目录
一、File类
1、File的三种构造方法
package com.wxl.springbootpro01;
import org.junit.jupiter.api.Test;
import java.io.File;
public class MyTest {
@Test
public void test(){
//File类的三种构造方法
File f1=new File("E:\\java\\java.txt");
System.out.println(f1);
File f2=new File("E:\\java","java.txt");
System.out.println(f2);
File f3=new File("E:\\java");
File f4=new File(f3,"java.txt");
System.out.println(f4);
}
}
效果:可以看到File里存的只是路径,路径并不一定真的存在对应的文件。
2、File类创建文件和目录的方法
方法 | 用途 |
file.createNewFile() | 用于创建文件,不能创建目录。当文件或目录同名的存在时,该方法都不会再创建。 |
file.mkdir() | 用于创建单个目录。 |
file.mkdirs() | 可用于创建多层级的目录。 |
这些方法都是在创建成功时返回true,文件或目录存在时不创建返回false。
3、File类的判断和获取功能
方法 | 描述 |
isDirectory() | 测试此抽象路径名表示的File是否为目录 |
isFile() | 测试此抽象路径名表示的File是否为文件 |
exists() | 测试此抽象路径名表示的File是否存在 |
getAbsolutePath() | 返回此抽象路径名的绝对路径名字字符串 |
getPath() | 将此抽象路径名转换为路径名字符串 |
getName() | 返回由此抽象路径名表示的文件或目录的名称 |
list() | 返回此抽象路径名表示的目录中的文件和目录的名字字符串数组 |
listFiles() | 返回此抽象路径名表示的目录中的文件和目录的File对象数组 |
4、File类的删除功能
delete() | 可以删除文件或目录,如果要删除的目录下有文件则会删除失败,必须先删除目录下的内容再删除目录。 |
5、File遍历目录
package com.wxl.springbootpro01;
import org.junit.jupiter.api.Test;
import java.io.File;
public class MyTest {
@Test
public void test(){
File srcFile=new File("D:\\DataQuery");
getAllFilePath(srcFile);
}
public void getAllFilePath(File srcFile){
//获取File目录下的所有文件或者目录的File数组
File[] fileArray=srcFile.listFiles();
//遍历File数组,得到没有个File对象
if(fileArray!=null){
for(File file:fileArray){
//判断File对象是否为目录
if(file.isDirectory()){
//是,递归调用
getAllFilePath(file);
}else{
//不是,获取绝对路径输出控制台
System.out.println(file.getAbsolutePath());
}
}
}
}
}
运行结果:目录下所有文件名获取到
二、IO流
1、字节流
文件读写时使用字节流能避免很多不必要的麻烦,字符串转换为字节类型可以使用.getBytes()方法。
字节流抽象基类
inputStream:所有输入类的超类
outputStream: 所有输出类的超类
FileOutputStream使用案例:
package com.wxl.springbootpro01;
import org.junit.jupiter.api.Test;
import java.io.FileOutputStream;
import java.io.IOException;
public class MyTest {
@Test
public void test() throws IOException {
//创建字节输出流对象
FileOutputStream fos=new FileOutputStream("test.txt",true);//true表示追加写入
/*
做了三件事情:
A.调用系统功能创建了文件
B.创建了字节输出流对象
C.让字体输出流对象指定创建好的文件
*/
fos.write(97);
//最后一定要释放资源
fos.close();
}
}
效果:创建了该文件,并写入了数据。
FileInputStream使用案例:
package com.wxl.springbootpro01;
import org.junit.jupiter.api.Test;
import java.io.FileInputStream;
import java.io.IOException;
public class MyTest {
@Test
public void test() throws IOException {
//创建字节输入流对象
FileInputStream fis = new FileInputStream("test.txt");
int by = -1;
while ((by=fis.read())!= -1) {//没读取到文件时返回-1
System.out.print((char) by);
}
//最后一定要释放资源
fis.close();
}
}
效果:可以看到文件已被读取,不过编码格式不对造成乱码。
2、写入文件案例
package com.yiibai;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class WriteToFile2 {
public static void main(String[] args) {
try {
String content = "Yiibai.com is one the best site in the world";
File file = new File("outfile2.txt");
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(content);
bw.close();
System.out.println("All Job Done!");
} catch (IOException e) {
e.printStackTrace();
}
}
}