File I/O
1、File类查看文件/目录的属性,创建删除文件
JAVA API:java.io.File类
public static void fileStudy() {
File file = new File("src/catnip/demo/testFile");
try {
file.createNewFile(); // 如果不存在则创建文件
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(file.isFile()); // 是否是文件
System.out.println(file.isDirectory()); // 是否是目录
System.out.println(file.getAbsolutePath()); // 绝对路径
System.out.println(file.getPath()); // 相对路径
System.out.println(file.length()); //返回文件的长度(字节), 文件不存在则返回0
if (file.exists()); { // 是否存在
file.delete(); // 删除
}
}
2、流:读写文件
流是指一连串流动的字符,以先进先出方式发送信息的通道
读:文件 → 程序
写:文件 ← 程序
2.1 文本文件读写
2.1.1字节流
8位通用字节流
FileInputStream + FileOutputStream
//将文件a中的内容复制到b
import java.io.*;
public static void fileStreamStudy() throws IOException {
FileInputStream fis = new FileInputStream("src/catnip/demo/a"); // 创建输入流对象,读a
FileOutputStream fos = new FileOutputStream("src/catnip/demo/b"); // 创建输出流对象,写b
byte words [] = new byte[1024];
do {
fis.read(words);
fos.write(words, 0, words.length);
} while (fis.read() != -1);
fis.close();
fos.close();
}}
2.1.2 字符流 + 缓冲流
读:BufferedReader+FileReader
写:BufferedWriter+FileWriter
//模板文件a内容:姓名={name},性别={sexual},年龄={age}
//将catnip+女+20替换进去,存入文件b中
import java.io.*;
public static void fileStreamStudy() throws IOException {
Reader fr = new FileReader("src/catnip/demo/a");
BufferedReader reader = new BufferedReader(fr);
Writer fw = new FileWriter("src/catnip/demo/b");
BufferedWriter writer = new BufferedWriter(fw);
String line = null;
StringBuffer sbf = new StringBuffer();
//循环读取并追加字符
while ((line = reader.readLine()) != null) {
sbf.append(line);
}
String newString = sbf.toString().replace("{name}", "catnip");
newString = newString.replace("{sexual}", "女");
newString = newString.replace("{age}", "20");
writer.write(newString); //写入文件
writer.flush(); // 流对象的清空,不可少
fr.close();
fw.close();
reader.close();
writer.close();
}
2.2 二进制文件读写
DataInputStream + DataOutputStream
// pic1目录下有图片pic1.bmp,将图片复制到pic2目录下,名字为pic2.bmp
public static void picStreamStudy() throws IOException {
FileInputStream fis = new FileInputStream("src/catnip/demo/pic1/pic1.bmp");
DataInputStream dis = new DataInputStream(fis);
FileOutputStream fos = new FileOutputStream("src/catnip/demo/pic2/pic2.bmp");
DataOutputStream dos = new DataOutputStream(fos);
byte words [] = new byte[9999];
do {
dis.read(words);
dos.write(words, 0, words.length);
} while (fis.read() != -1);
dis.close();
dos.close();
}