JavaNote 文本文件读写

文本文件

  • 文件类型
    • 一般文本文件(若干行字符构成的文件),如txt等;
    • 一般二进制文件,如数据文件dat;
    • 带特殊格式的文本文件,如xml;
    • 带特殊格式二进制文件,如doc,ppt等;
  • 文件时数据的一个容器;
  • 文件可以存放大量的数据;
  • 文件很大,注定Java只能以流形式依次处理

输入输出

  • 从Java角度理解
    • 输出:数据从Java到文件中,写操作;
    • 输入:数据从文件到Java中,读操作;
  • 文本文件读写
    • 输出文本字符到文件中;
    • 从文件中读取文本字符;

v2-f01ed6733717810680f04535581a8b09_b.jpg
  • 写文件
    • 先创建文件,写入数据,关闭文件
    • FileOutputStream:往文件写字节
    • OutputStreamWriter:字节和字符转化
    • BufferedWriter:写缓冲区类,加速写操作
    • BufferWriter:
      • write
      • newLine
    • try-resource语句,自动关闭资源
    • 关闭最外层的数据流,将会把其上所有的数据流管理

例程:

import java.io.*;

public class TxtFileWrite {
	public static void main(String[] args) {
		writeFile1();
		System.out.println("===================");
		//writeFile2(); // JDK 7及以上才可以使用
	}

	public static void writeFile1() {
		FileOutputStream fos = null;//FileOutputStream节点类,负责写字节
		OutputStreamWriter osw = null;//OutputStreamWriter转化类,负责字符到字节转化
		BufferedWriter bw = null;//装饰类,负责写字符到缓存区
		//
		try {
			fos = new FileOutputStream("c:/temp/abc.txt"); // 节点类
			osw = new OutputStreamWriter(fos, "UTF-8"); // 转化类
			//osw = new OutputStreamWriter(fos); // 转化类
			bw = new BufferedWriter(osw); // 装饰类
			// br = new BufferedWriter(new OutputStreamWriter(new
			// FileOutputStream("c:/temp/abc.txt")))
			bw.write("我们是");
			bw.newLine();
			bw.write("Ecnuers.^^");
			bw.newLine();
		} catch (Exception ex) {
			ex.printStackTrace();
		} finally {
			try {
				bw.close(); // 关闭最后一个类,会将所有底层流都关闭
			} catch (Exception ex) {
				ex.printStackTrace();
			}
		}
	}

	public static void writeFile2() {
		//try-resource 自动关闭资源
		try (BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("c:/temp/abc.txt")))) {
			bw.write("我们是");
			bw.newLine();
			bw.write("Ecnuers.^^");
			bw.newLine();
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
}
  • 读文件
    • 先打开文件,逐行读入数据,关闭文件
    • FileInputStream
    • FileStreamWriter
    • FileBufferReader
    • BufferReader
      • readLine
    • try-resource语句,自动关闭资源
    • 关闭最外层的数据流,将会把其上所有的数据流关闭
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.HashMap;

public class TxtFileRead {
	public static void main(String[] args) {
		readFile1();
		System.out.println("===================");
		//readFile2(); //JDK 7及以上才能使用
	}

	public static void readFile1() {
		FileInputStream fis = null;
		InputStreamReader isr = null;
		BufferedReader br = null;
		try {
			fis = new FileInputStream("c:/temp/abc.txt"); // 节点类
			isr = new InputStreamReader(fis, "UTF-8"); // 转化类
			//isr = new InputStreamReader(fis);
			br = new BufferedReader(isr); // 装饰类
			// br = new BufferedReader(new InputStreamReader(new
			// FileInputStream("c:/temp/abc.txt")))
			String line;
			while ((line = br.readLine()) != null) // 每次读取一行
			{
				System.out.println(line);
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		} finally {
			try {
				br.close(); // 关闭最后一个类,会将所有的底层流都关闭
			} catch (Exception ex) {
				ex.printStackTrace();
			}
		}
	}

	public static void readFile2() {
		String line;
		//try-resource 语句,自动关闭资源
		try (BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("c:/temp/abc.txt")))) {
			while ((line = in.readLine()) != null) {
				System.out.println(line);
			}
		}
		catch(Exception ex)
		{
			ex.printStackTrace();
		}
	}
}

输出结果:

我们是
Ecnuers.^^
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值