文章目录
1、IO 流
1.1、文件
1.1.1、什么是文件
1.1.2、文件流
1.2、常用的文件操作
1.2.1、创建文件对象相关构造器和方法
代码实现
请在e盘中,创建文件 news1.txt、news2.txt、new3.txt,用三种不同的方式创建
package file;
import org.junit.jupiter.api.Test;
import java.io.File;
import java.io.IOException;
/**
* 创建文件
*/
public class FileCreate {
public static void main(String[] args) {
}
// 方式 1 new File(String pathname)
@Test
public void create01() {
String filePath = "e:\\news1.txt";
File file = new File(filePath);
try {
file.createNewFile();
System.out.println("文件创建成功");
} catch (IOException e) {
e.printStackTrace();
}
}
// 方式 2 new File(File parent,String child) // 根据父目录文件+子路径构建
// e:\\news2.txt
@Test
public void create02() {
File parentFile = new File("e:\\");
String fileName = "news2.txt";
// 这里的 file 对象, 在 java 程序中, 只是一个对象
// 只有执行了 createNewFile 方法, 才会真正的在磁盘创建该文件
File file = new File(parentFile, fileName);
try {
file.createNewFile();
System.out.println("创建成功~");
} catch (IOException e) {
e.printStackTrace();
}
}
// 方式 3 new File(String parent,String child) // 根据父目录+子路径构建
@Test
public void create03() {
String parentPath = "e:\\";
String fileName = "news3.txt";
File file = new File(parentPath, fileName);
try {
file.createNewFile();
System.out.println("创建成功~");
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 下面四个都是抽象类
// InputStream
// OutputStream
// Reader // 字符输入流
// Writer // 字符输出流
1.2.2、获取文件的相关信息
getName、getAbsolutePath、getParent、length、exists、isFile、isDirectory
代码实现
如何获取到文件的大小,文件名,路径,父File,是文件还是目录(目录本质也是文件,一种特殊的文件),是否存在
package file;
import org.junit.jupiter.api.Test;
import java.io.File;
public class FileInformation {
public static void main(String[] args) {
}
// 获取文件的信息
@Test
public void info() {
// 先创建文件对象
File file = new File("e:\\news1.txt");
// 调用相应的方法, 得到对应信息
System.out.println("文件名字=" + file.getName());
// getName、getAbsolutePath、getParent、length、exists、isFile、isDirectory
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
}
}
1.2.3、目录的操作和文件删除
1.2.4、应用案例演示
package file;
import org.junit.jupiter.api.Test;
import java.io.File;
public class Directory_ {
public static void main(String[] args) {
}
// 判断 d:\\news1.txt 是否存在, 如果存在就删除
@Test
public void m1() {
String filePath = "e:\\news1.txt";
File file = new File(filePath);
if (file.exists()) {
if (file.delete()) {
System.out.println(filePath + "删除成功");
} else {
System.out.println(filePath + "删除失败");
}
} else {
System.out.println("该文件不存在...");
}
}
// 判断 D:\\demo02 是否存在, 存在就删除, 否则提示不存在
// 这里我们需要体会到, 在java编程中, 目录也被当做文件
@Test
public void m2() {
String filePath = "D:\\demo02";
File file = new File(filePath);
if (file.exists()) {
if (file.delete()) {
System.out.println(filePath + "删除成功");
} else {
System.out.println(filePath + "删除失败");
}
} else {
System.out.println("该目录不存在...");
}
}
// 判断 D:\\demo\\a\\b\\c 目录是否存在, 如果存在就提示已经存在, 否则就创建
@Test
public void m3() {
String directoryPath = "D:\\demo\\a\\b\\c";
File file = new File(directoryPath);
if (file.exists()) {
System.out.println(directoryPath + "存在...");
} else {
if (file.mkdirs()) { //创建一级目录使用mkdir() ,创建多级目录使用mkdirs()
System.out.println(directoryPath + "创建成功...");
} else {
System.out.println(directoryPath + "创建失败...");
}
}
}
}
1.3、IO 流原理及流的分类
1.3.1、Java IO 流原理