javaIO流中的FileInputStream和FileOuputStream

这篇博客展示了如何使用Java的FileInputStream和FileOutputStream进行字节流操作,包括读取文件内容、按字节数组读写以及实现文件复制功能。代码示例详细演示了字节流在读写过程中的应用,强调了流的关闭以避免资源泄露。
摘要由CSDN通过智能技术生成

字节流,按字节读取数据,是万能流,可以读取任何形式的文件,下面主要是FileInputStream和FileOutputStream

package com.java.cq.IO.test;
import java.io.FileInputStream;
import java.io.IOException;

public class Iotest03 {
	public static void main(String [] agrs) {
		//创建字符流输入对象
		//构造函数中的对象是文件地址
		FileInputStream fis=null;
		try {
			 fis=new FileInputStream("d:\\学习笔记\\java\\ws.txt");
			 //在文件写入abcef后
			 //读取数据使用循环 
				/*
				 * while(true) { int readable= fis.read();//读到的字节大小 if(readable==-1) break;
				 * System.out.println(readable);//97 98 32 99 //32是一个空格,空格的大小32 } while循环看着不舒服
				 * //改进代码 
				 * int readable=0; while((readable=fis.read())!=-1) {
				    System.out.println(readable); //但是读取的效率还是太低 }
				 */
			    //read(Byte[] b)方法读取 每次按照数组长度读取
			     byte[] b=new byte[4];
			     int data=0;
			     while(( data=fis.read(b))!=-1) {
			   System.out.print(new String(b,0,data)); 
			     }
			
		} catch (IOException  e) {
			// TODO 自动生成的 catch 块
			System.out.println("文件不存在");//自己处理异常
		}finally {
			if(fis!=null) {
				//确保流一定关闭
				try {
					fis.close();
				} catch (IOException e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}
			}
		}
	}
}
package com.java.cq.IO.test;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/*FileOutputStream 输出流
 */
public class Iotest {

	public static void main(String [] agrs){
		
		//文件字节输出流对象
		FileOutputStream fos =null;
		try {
			//如果没有文件它会字节创建
			fos=new FileOutputStream("D:\\学习笔记\\java\\ws.txt",true);
		  //开始写
			byte [] b = {97,98,99,100};
			
			// 但是会清空远文件
			fos.write(b);
			//写全部
			fos.write(b, 0, 2);//写部分
			//写完之后刷新
			fos.flush();//刷新
		} catch (FileNotFoundException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		} catch (IOException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}finally {
			if(fos!=null) {
				try {
					fos.close();
				} catch (IOException e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}
			}
		}
	}
}

字节流练习代码

package com.java.everdattest;

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

//文件复制
public class Todaystest11 {

	public static void main(String [] agrs){
		
		//创建对象
		FileInputStream fis =null;//读
		FileOutputStream fos =null;
		
		try {
			fis=new FileInputStream("D:\\学习笔记\\java\\ws.txt");//读取文件对象文件
			fos=new FileOutputStream("D:\\学习笔记\\java\\wss.txt");//输入对象文件
			 byte [] b =new byte[fis.available()];
			 fis.read(b);
			fos.write(b);
			fos.flush();
			 
		} catch (FileNotFoundException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		} catch (IOException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}finally {
			if(fis!=null) {
				try {
					fis.close();
				} catch (IOException e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}
			}
			if(fos!=null) {
				try {
					fos.close();
				} catch (IOException e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}
			}
		}
	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值