文件基础
文件:保存数据的地方,声音、图片、文字、视频、音频
文件流:
文件在程序中是以流的形式来操作的
输入流
java程序(内存) <-------
------> 文件磁盘(文件、数据源)
输出流
文件创建的三种方法
public static void main(String[] args) throws IOException {
file1();
file2();
file3();
}
// 文件创建的三种方法
public static void file1() {
File file = new File("D:\\a.txt");
try {
file.createNewFile();
System.out.println("文件创建成功file1");
} catch (IOException e) {
e.printStackTrace();
}
}
public static void file2() {
File parent = new File("D:\\");
File file = new File(parent,"b.txt");
try {
file.createNewFile();
System.out.println("文件创建成功file2");
} catch (IOException e) {
e.printStackTrace();
}
}
public static void file3() {
String parentFile1 = "D:\\";
String parentFile2 = "D:/";
File file = new File(parentFile1,"c.txt");
try {
file.createNewFile();
System.out.println("文件创建成功file3");
} catch (IOException e) {
e.printStackTrace();
}
}
}
文件常用的操作
- getName
- getAbsolutePath
- getParent
- length
- exists
- isFile
- isDirectory
目录操作和文件删除
目录创建:目录被当做一种文件进行操作
- 目录的创建于删除
- 多级目录创建使用mkdirs( )
public class Directory_ {
public static void main(String[] args) {
// 创建一个目录
String parentFile = "d:\\demo02";
File file = new File(parentFile);
file.mkdir();
if(file.exists()) {
file.delete();
System.out.println("删除成功");
}
}
}
IO流的分类
- 按操作数据单位不同分为:字节流(8 bit)二进制文件,字符流(按字符)文本文件
- 按数据流的流向不同分为:输入流,输出流
- 按流的角色的不同分为:节点流,处理流/包装流
| 抽象基类 | 字节流 | 字符流 |
|---|---|---|
| 输入流 | InputStream | Reader |
| 输出流 | OuputStream | Writer |
- 这四个父类都是抽象类, 共同点都集成了Closeable接口
IO流体系图-常用的类
字节流的使用,读入写出案例,拷贝图片
public static void main(String[] args) {
String a= "D:\\a.jpg";
int A=0;
String Atext=null;
String Btext=null;
String b= "D:\\xxx\\a.jpg";
byte [] bytes = new byte[1024];
// 字节读取与写入
// 字节读取
FileInputStream inputStream =null;
FileOutputStream outputStream =null;
try {
inputStream = new FileInputStream(a);
outputStream = new FileOutputStream(b,true);
while((A = inputStream.read(bytes))!=-1) {
// 将读取到的文件存入Atext中
outputStream.write(bytes);
}
} catch (IOException e) {
e.printStackTrace();
}
}
FileReader 和File Writer介绍
FileWriter常用方法
- new FileWriter(File/String):覆盖模式,相当于流的指针在首端
- new FileWriter(File/String,true):追加模式,相当于流的指针在尾端3) write(int):写入单个字符
- write(char):写入指定数组
- write(char[,off,len):写入指定数组的指定部分 write (string):写入整个字符串
- write(string,off,len):写入字符串的指定部分 相关API: String类:toCharArray:将String转换成char[]
- FileWriter使用后,必须要关闭(close) 或者刷新(flush) ,否则写入不到指定的文件
节点流和处理流的区别和联系
-
节点流是底层流/低级流,直接跟数据源相接。
-
处理流(包装流)包装节点流,既可以消除不同节点流的实现差异,也可以提供更方便的方法来完成输入输出
-
处理流(也叫包装流)对节点流进行包装,使用了修饰器设计模式,不会直接与数据源相连
处理流的功能主要体现在以下两个方面
-
BufferedReader 和 BufferedWriter属于字符流,是按照字符来读取数据的
-
关闭时处理流,只需要关闭外层流即可