JAVA文件操作
JAVA 文件操作
读取文件
文件读取到计算机的步骤:
1.获取文件: File file = new File(path)
2.建立文件输入流对象:FileInputStream fileInputStream = new FileInputStream(file)
3.建立输入流对象:InputStreamReader reader = new InputStreamReader(fileInputStream);
4.建立缓冲区:BufferedReader br = new BufferedReader(reader);
5.现在可以读取文件内容到内存了,这里每次读取一行:br.readLine()
6.文件读取完毕,关闭文件流:br.close()
记得使用try{}catch(){}
块捕获并处理文件读取异常,也可以选择throw
基本代码如下:
try { // 防止文件建立或读取失败,用catch捕捉错误并打印,也可以throw
/* 读入TXT文件 */
String pathname = "F:\\JAVA\\workspace\\day15Task\\src\\task01\\Date.txt"; // 文件路径(也可以是相对路径)
File filename = new File(pathname); // 要读取以上路径的Product.txt文件
InputStreamReader reader = new InputStreamReader(new FileInputStream(filename)); // 建立一个输入流对象reader
BufferedReader br = new BufferedReader(reader); // 建立一个对象,它把文件内容转成计算机能读懂的语言
String line = "";
line = br.readLine();
while (line != null) {
line = br.readLine(); // 一次读入一行数据
}
br.close();//关闭文件流
} catch (Exception e) {
System.out.println("文件读取失败");
e.printStackTrace();
}
层级打印目录与文件
打印一个树形目录:
备忘代码:
public static void main(String[] args) {
/*
* 从键盘接收一个文件夹路径,把文件夹中的所有文件以及文件夹的名字按层级打印
* */
String path = "D:\\新建文件夹";
File file = new File(path);
System.out.println(file.getName());
print(file,0);
}
public static void print(File file, int level) {
File[] list = file.listFiles();
if (list == null) {
System.out.println("找不到文件夹路径");
}
for (File f : list) {
for (int i = 0; i <= level; i++) {
if(i == 0) {
System.out.print("|__");
}else {
System.out.print("__");
}
}
if (f.isDirectory()) {
System.out.println(f.getName());
print(f, level + 1);
} else {
System.out.println(f.getName());
}
}
//return --level;//当这样递归调用时:print(f, ++level),为了查完内层后退出外层时,
//打印的是外层的空格数,所以要层数-1。如果不想记录层数,就这样调用:print(f, level + 1)
}
序列化
Java 提供了一种对象序列化的机制。用一个字节序列可以表示一个对象,该字节序列包含该对 象数据、对象的类型和对象中存储的属性等信息。字节序列写出到文件之后,相当于文件中持久保 存了一个对象的信息。反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列 化。对象的数据、对象的类型和对象中存储的数据信息,都可以用来在内存中创建对象。 ObjectOutputStream 将 Java 对象的原始数据类型写出到文件,实现对象的持久存储。 ObjectInputStream 反序列化流,将之前使用 ObjectOutputStream 序列化的原始数据恢复为对象。
持续更新……