JAVA——IOStream

本文阐述了Java中IO流的原理,重点讲解了字节流(如FileInputStream和FileOutputStream)与字符流(如Reader和Writer)的使用方法,涉及数据的存储、读取、换行符处理以及资源管理。
摘要由CSDN通过智能技术生成

目录

IO流:存储和读取数据的解决方案

IO流的分类:

按照流的方向:

按照操作文件类型:

字节流:可以操作所有类型的文件

字节输入流: LnputStream 读取数据

字节输出流:OutputStream 写出数据

字符流:只能操作纯文本文件(Windows自带的记事本打开并且能读懂的文件 如txt/md/xml/lrc)

字符输入流:Reader

字符输出流:Writer

File字节输出流:

1.创建字节输出流对象

2.写数据

3.释放资源

File字节输入流:操作本地文件的字节输入流,可以把本地文件中的数据读取到程序中来

1.创建字节输入流对象

2.读数据

3.释放资源


IO流:存储和读取数据的解决方案

                   I:input                      O:output

作用: 用于读写文件中的数据(可读写文件,或网络中的数据)

输入写出的参考对象是程序本身

--程序中的数据写到文件中输出output

--将文件中的数据加载读取到程序中读取input

IO流的分类:

按照流的方向:

        输入流:读取---从文件中读取

        输出流:写出---写出到文件

按照操作文件类型:

字节流:可以操作所有类型的文件

字节输入流: LnputStream 读取数据

        操作本地文件的字节输入流:FileInputStream

        操作对象的字节输入流:ObjectInputStream

        带有缓冲区的字节输入流:BufferedInputStream

字节输出流:OutputStream 写出数据

        操作本地文件的字节输出流:FileOutputStream

        操作对象的字节输出流:ObjectOutputStream

        带有缓冲区的字节输出流:BufferedOutputStream

字符流:只能操作纯文本文件(Windows自带的记事本打开并且能读懂的文件 如txt/md/xml/lrc)

字符输入流:Reader

        操作本地文件的字符输入流:FileReader

        操作缓冲区的字符输入流:BufferedReader

        带有行号的字符输入流:LineNumberReader

字符输出流:Writer

        操作本地文件的字符输出流:FileWriter

        操作缓冲区的字符输出流:BufferedWriter

        带有行号的字符输出流:LineNumberWriter

LnputStream OutputStream Reader Writer 都是抽象类无法直接创建对象,,只能创建其子类对象如FileInputStream

File字节输出流:

书写步骤:

1.创建字节输出流对象

        参数是字符串表示的路径或是File对象都是可以的

        如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的

        如果文件已经存在则会清空文件并重写

2.写数据

        write方法的参数是整数,但是实际上写到本地文件中的是整数在ASCII上对应的字符

        如果要写整数的话用''括号即可

写数据方法:

        void write(int b)  一次写一个字节数据

        void write(byte[] b)  一次写一个字节数组数据

        void write(byte[] b,int off,int len)  一次写一个字节数组的部分数据

                参数一:装有数据的数组

                参数二:off表示起始索引

                参数三:个数

换行写:两个write中间再次写出一个换行符

Windows系统: \r\n 回车换行

Linux系统: \n 换行

Mac系统: \r 换行

在Windows操作系统中java对回车换行进行了优化,完整的是\r\n 但仅仅只写一个\r或\n也可实现换行因为java会在底层进行补全

续写

FileOutputStream() 第二个参数是续写开关

开关位置:创建对象时的第二个参数

默认false表示关闭续写,此时创建对象会自动清空文件

可以手动传递一个true表示打开续写

3.释放资源

每次使用完流之后都要释放资源

File字节输入流:操作本地文件的字节输入流,可以把本地文件中的数据读取到程序中来

书写步骤:

1.创建字节输入流对象

如果文件不存在直接报错--因为如果自动创建的话是空文件读取不到有效数据,无意义!

2.读数据

read()方法读取数据,读取一次就移动一次指针,循环读取时无需做计数操作

一次读取一个字节,读出来的是数据在ASCII上对应的数字

读取到文件末尾了无数据了,read()方法返回一个-1

3.释放资源

每次使用完流之后必须释放资源

--先开的流最后释放

//创建对象------建立通道
		FileOutputStream fos = new FileOutputStream("D:\\桌面\\java_File_test\\a.txt");
		//写出数据------数据传输
		fos.write('9');//写出的数据会把当前数字转换为字符
		//释放资源-------切断通道
		//fos.close();
	
		byte[] bys = {97,98,99,100,101,102,103,104,105,106,107,108};
		fos.write(bys,2,3);
		//fos.close();
		
		
		FileOutputStream fos1 = new FileOutputStream("D:\\桌面\\java_File_test\\b.txt",true);
		String str = "songbinzuishuai";
		byte[] by1 = str.getBytes();  //字符转换为字节数字
		fos1.write(by1);
		
		//换行操作
		String swrap = "\r\n";
		byte[] wrap = swrap.getBytes();
		fos1.write(wrap);
		
		fos1.write('2');
		System.out.println(Arrays.toString(by1));
		fos.close();
		
		
		
		//字节输入流
		FileInputStream fis = new FileInputStream("D:\\桌面\\java_File_test\\b.txt");
		//读数据
		int b1 = fis.read();  //读取的是文件中第一个数据的ASCII整数表达形式
		System.out.println((char)b1);
		
		
		//循环读取
		int b;
		while((b = fis.read()) != -1) {  // !=-1 说明未读取到末尾,=-1条件达到结束循环
			System.out.print((char)b);
		}
		fis.close();
		

  • 16
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值