使用字节流读写文本文件:FileInputStrea和FileOutputStream

import java.io.FileInputStream;//导入输入流
import java.io.FileOutputStream;//导入输出流
import java.io.IOException;//导入异常类
/**
 * 读写txt文本文件
 * 使用字节流FileInputStrea和FileOutputStream
 * @author Administrator
 *
 */
public class FileInputOutputStream {
	public static void main(String[] args) throws IOException  {//抛出异常
/*
 * 文件输出流FileOutputStream,为抽象类字节输出流OutputStream基类的子类
 * 文件输入流FileInputStream,为抽象类字节输入流InputStream基类的子类
 * 路径格式可以是"c:\\","c:/","c://",'\'属于转义字符,使用时需要前加'\'字符
 * 字节流用来读写单字节字符,双字节字符可以写入,但读取时会失真,双字节字符比如汉字的读写用字符流
 * 字节流读写时将流动的字符拆解成一个个字节,按字节读写,先进先出,读的是字符的ASCII值(字节类值0~255),写的也是字符的ASCII值 
 */
		/**
		 * 写入文件数据时,系统运行时,首先判断该文件路径是否合法,若不合法,抛出异常,若合法
		 * 其次判断文件路径是否存在,若不存在,将在运行时创建此文件,创建空文件
		 * 再次判断文件路径代表的是文件目录还是文件(文件有后缀),若是文件目录,抛出异常,若是文件
		 * 再次判断写入内容是覆盖文件中原有的内容还是文件尾追加写入,默认情况下,向文件写数据时将覆盖文件中原有的内容
		 * 最后,写入文件内容
		 */
		//1.写文件
		//1.1创建输出流对象,该对象为目标txt文件,对象引用变量指向目标txt文件,构造方法重载,参数为目标txt文件路径,有3种方式可选
		//FileOutputStream(String name)
		//FileOutputStream(String name, boolean append),true表示追加写入
		//FileOutputStream(File file)
		FileOutputStream fos=new FileOutputStream("C:\\Users\\Administrator\\Desktop\\streamfile.txt",true);
		//1.2使用字符串创建字节类数组,字节类数组长度(即字节数)作为写入流长度,每一字符(1或2字节)作为写入内容
		String s="abc123";
		byte[]bits=s.getBytes();
		//1.3向目标txt文件中写入内容,字节类数组作为写入方法参数,数组每个元素值为写入的字符的ASCII码值,实际写入的是每个ASCII码值代表的字符
		//写入方法参数不能直接是字符串类型值,只能是字节类型值(字节类值0~255)
		//write有3种重载方法
		//write(byte b[]),向目标路径txt文件写入字节类数组byte b[]解码后的字符
		//write(byte b[], int off, int len),向目标路径txt文件写入字节类数组byte b[]中,从off下标开始len个字节解码后的字符
		//write(int b),向目标路径txt文件写入b个字节的空字符
		fos.write(bits);
		//1.4关闭输出流
		fos.close();
		
		/**
		 * 读文件数据时,系统运行时,首先判断该文件路径是否合法,若不合法,抛出异常,若合法
		 * 其次判断文件路径是否存在,若不存在,抛出异常,若存在
		 * 再次判断文件路径代表的是文件目录还是文件(文件有后缀),若是文件目录,抛出异常,若是文件
		 * 最后,读出文件内容 
		 */
		//2.读文件
		//2.1创建输入流对象,该对象为目标txt文件,对象引用变量指向目标文件,构造方法重载,参数为目标txt文件路径,有2种方式可选
		//FileInputStream(String name)
		//FileInputStream(File file)
		FileInputStream fis=new FileInputStream("C:\\Users\\Administrator\\Desktop\\streamfile.txt");
		//2.2实例方法available()返回目标txt文件大小(字节数)
		System.out.println("可读取的字节数:"+fis.available());
		//2.3读取目标txt文件的每一个字符
		//实例方法read()读取下一个字符,并返回其ASCII码值
		//the next byte of data, or -1 if the end of the file is reached
		System.out.println("文件内容是:");
		int data;
		while ((data=fis.read())!=-1) {
			System.out.print((char)data);
		}
		//2.4关闭输入流
		fis.close();
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值