File I/O
1蠕蚜、File類查看文件/目錄的屬性挺据,創(chuàng)建刪除文件
JAVA API:java.io.File類
public static void fileStudy() {
File file = new File("src/catnip/demo/testFile");
try {
file.createNewFile(); // 如果不存在則創(chuàng)建文件
} 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()); //返回文件的長度(字節(jié)), 文件不存在則返回0
if (file.exists()); { // 是否存在
file.delete(); // 刪除
}
}
2、流:讀寫文件
流是指一連串流動的字符价认,以先進先出方式發(fā)送信息的通道
讀:文件 → 程序
寫:文件 ← 程序
2.1 文本文件讀寫
2.1.1字節(jié)流
8位通用字節(jié)流
FileInputStream + FileOutputStream
//將文件a中的內容復制到b
import java.io.*;
public static void fileStreamStudy() throws IOException {
FileInputStream fis = new FileInputStream("src/catnip/demo/a"); // 創(chuàng)建輸入流對象,讀a
FileOutputStream fos = new FileOutputStream("src/catnip/demo/b"); // 創(chuàng)建輸出流對象自娩,寫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();
//循環(huán)讀取并追加字符
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();
}