一、文件
什么是文件
文件是保存数据的地方
文件流
文件在程序中是以流的形式来操作的
流:数据在数据源(文件)和程序(内存)之间经历的路径
输入流:数据从数据源(文件)到程序(内存)的路径
输出流:数据从程序(内存)到数据源(文件)的路径
常用的文件操作
1、创建文件对象相关构造器和方法
new File(String pathname):根据路径构建一个 File 对象
new File(File parent, String child):根据父目录文件 + 子路径构建
new File(String parent, String child):根据父目录 + 子路径构建
createNewFile:创建新文件
import org.junit.jupiter.api.Test;
import java.io.File;
import java.io.IOException;
public class FileCreate {
public static void main(String[] args) {
}
//方式一 new File(String pathname):根据路径构建一个 File 对象
@Test
public void create01() {
String filePath = "E:\\new1.txt";
File file = new File(filePath);
try {
file.createNewFile();
System.out.println("文件创建成功");
} catch (IOException e) {
e.printStackTrace();
}
}
//方式二 new File(File parent, String child):根据父目录文件 + 子路径构建
@Test
public void create02() {
File parent = new File("e:\\");
String child = "new2.txt";
File file = new File(parent, child);
try {
file.createNewFile();
System.out.println("文件创建成功");
} catch (IOException e) {
e.printStackTrace();
}
}
//方式三 new File(String parent, String child):根据父目录 + 子路径构建
@Test
public void create03() {
String parent = "e:\\";
String child = "new3.txt";
File file = new File(parent, child);
try {
file.createNewFile();
System.out.println("文件创建成功");
} catch (IOException e) {
e.printStackTrace();
}
}
}
2、获取文件的相关信息
getName():文件名字
getAbsolutePate():文件绝对路径
getParent():文件父级目录
length():文件大小(字节)
exists():文件是否存在
isFile():是不是一个文件
isDirectory():是不是一个目录
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:\\new1.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());
System.out.println("文件是不是一个文件:" + file.isFile());
System.out.println("文件是不是一个目录:" + file.isDirectory());
}
}
3、目录的操作和文件删除
mkdir():创建一级目录
mkdirs():创建多级目录
delete():删除空目录或文件
import org.junit.jupiter.api.Test;
import java.io.File;
public class Directory01 {
public static void main(String[] args) {
}
//判断 e:\\new1.txt 是否存在,如果存在就删除
@Test
public void m1() {
File file = new File("e:\\new1.txt");
if (file.exists()) {
if (file.delete()) {
System.out.println("删除成功");
}else {
System.out.println("删除失败");
}
}else {
System.out.println("文件不存在");
}
}
//判断 e:\\demo02 是否存在,存在就删除,否则提示不存在
//在java编程中,目录也被当作文件
@Test
public void m2() {
File file = new File("e:\\demo02");
if (file.exists()) {
if (file.delete()) {
System.out.println("删除成功");
}else {
System.out.println("删除失败");
}
}else {
System.out.println("文件不存在");
}
}
//判断 e:\\demo\\a\\b\\c 目录是否存在,如果存在就提示已经存在,否则就创建
@Test
public void m3() {
File file = new File("e:\\demo\\a\\b\\c");
if (file.exists()) {
System.out.println("文件已存在");
}else {
if (file.mkdirs()) {
System.out.println("创建成功");
}else {
System.out.println("创建失败");
}
}
}
}
二、IO流原理及流的分类
Java IO流原理
1、I/O是 Input/Output 的缩写,I/O技术是非常实用的技术,由于处理数据传输。如读/写文件,网络通讯等
2、Java程序中,对于数据的输入/输出操作以“流(Stream)”的方式进行
3、Java.io包下提供了各种“流”类的接口,用以获取不同种类的数据,并通过方法输入或输出数据
4、输入input:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中
5、输出output:将程序(内存)数据输出到磁盘、光盘等存储设备中
流的分类
1、按操作数据单位不同分为:字节流(8 bit)二进制文件,字符流(按字符)文本文件
2、按数据流的流向不同分为:输入流,输出流
3、按流的角色不同分为:节点流,处理流/包装流
Java的 IO 流共涉及40多个类,实际上非常规则,都是从如上4个抽象基类派生的
由这4个类派生出来的子类名称都是以其父类名作为子类名后缀