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 序列化的原始数据恢复为对象。

持续更新……