java字节、字符输入/输出流

以下讲解的类都继承于InputStream、OutputStream、Reader、Writer类,下面链接是这些类的常用方法:

https://blog.csdn.net/qq_31755183/article/details/103683945

1.FileInputStream类与FileOutputStream类(字节)

java提供了操作磁盘文件的(FileInputStream)类与(FileOutputStream)类,其中,读取文件内容使用的(FileInputStream)类,向文件写入内容使用的是(FileOutputStream)类

FileInputStream类常用的构造方法如下:

  • FileInputStream(String name):使用给定的文件名name创建一个FileInputStream对象;
  • FileInputStream(File file):使用File对象创建FileInputStream对象,该方法允许把文件连接输入流之前对文件做进一步分析

FileOutputStream类常用的构造方法:

  • FileOutputStream(File file):创建一个向指定File对象表示的文件中写入数据的文件输出流;
  • FileOutputStream(File file,Boolean append):创建一个向指定File对象表示的文件中写入数据的文件输出流,如果第二个参数为true,则将字节写入文件末尾处,而不是写入文件开始处;
  • FileInputStream(String name)与FileInputStream(String name,Boolean append)这两个构造方法与上面两个类似

FileInputStream类与FileOutputStream类操作的数据单元是一个字节,如果文件中有中文字符(占两个字节),那么使用FileInputStream类与FileOutputStream类读、写文件的过程中会产生乱码,下面一个实例来解决这个乱码问题,代码如下:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Test {
	public static void main(String[] args) {
		File file = new File("word.txt"); // 创建文件对象
		try { // 捕捉异常
			// 创建FileOutputStream对象,用来向文件中写入数据
			FileOutputStream out = new FileOutputStream(file);
			// 定义字符串,用来存储要写入文件的内容
			String content = "窗前明月光,疑是地上霜";
			// 创建byte型数组,将要写入文件的内容转换为字节数组
			byte buy[] = content.getBytes();
			out.write(buy); // 将数组中的信息写入到文件中
			out.close(); // 将流关闭
		} catch (IOException e) { // catch语句处理异常信息
			e.printStackTrace(); // 输出异常信息
		}
		try {
			// 创建FileInputStream对象,用来读取文件内容
			FileInputStream in = new FileInputStream(file);
			byte byt[] = new byte[1024]; // 创建byte数组,用来存储读取到的内容
			int len = in.read(byt); // 从文件中读取信息,并存入字节数组中
			//由于数组是1024字节的并没有全部占完,输出的时候会有很多空白,所以要去除空白内容
			System.out.println("文件中的内容是:" + new String(byt).trim());// 将文件中的信息输出
			in.close(); // 关闭流
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

返回结果:

2.FileReader类与FileWriter类(字符)

FileReader类与FileWriter类对应了FileInputStream类与FileOutputStream类,其中,读取文件内容使用的是FileReader类,向文件中写入内容使用的是FileWriter类,FileReader类与FileWriter类操作的数据单元是一个字符,如果文件中有中文字符,那么使用FileReader类与FileWriter类读、写文件时会避免乱码问题

FileReader类与FileWriter类的构造方法与FileInputStream类和FileOutputStream类类似,就不讲解了,下面来看一个实例,代码如下:

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Test {
	public static void main(String[] args) {
		File file = new File("test.txt");
		try {
			FileWriter fw = new FileWriter(file);
			fw.write("举头望明月,低头思故乡");
			fw.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		try {
			FileReader fr = new FileReader(file);
			char chr[] = new char[1024];
			//已经读取的字符数
			int count;
			//循环读取文件内容,当不等于-1时,则继续读,如果等于-1时就证明文件内容已读完,停止读取
			while((count = fr.read(chr)) != -1) {
				System.out.println("文件内容是:" + new String(chr).trim());
			}
		}catch (FileNotFoundException e) {
			e.printStackTrace();
		}catch (IOException e) {
			e.printStackTrace();
		}
	}
}

返回结果:

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值