【java】文件输出流 与 文件输入流 实例

本文详细介绍了Java中的文件输入流FileInputStream和文件输出流FileOutputStream。内容包括字节流的使用,如write数据的三种方式,如何实现换行以及追加写入,并强调了异常处理在字节流操作中的重要性,特别是在finally块中释放资源的实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IO流 按数据流向分为  输入流(读数据)与 输出流(写数据)

         按数据类型分为 字节流  与 字符流 

 

以文件输出流为参考,了解输出流的应用(write数据的三种方式) ,输入流则是read数据的三种方式,了解字节流的特性及操作

FileOutputStream 用于将数据写入Fille 

以下是FileOutputStream的构造方法与写入

package IO;

import java.io.FileOutputStream;
import java.io.IOException;

public class Ffileoutputstrream {

	public static void main(String[] args) throws IOException {
		
		//FileOutputStream(String name) 创建文件输出流,写入以指定的 名称 表示的文件
		FileOutputStream f=new FileOutputStream("D:\\FILE\\java.txt");
		
		//FileOutputStream(File file) 创建文件输出流,写入以指定的 File对象 表示的文件
		/*File ff=new File("D:\\FILE\\java.txt");
		  System.out.println(ff.createNewFile());//true
		  FileOutputStream f=new FileOutputStream("ff");*/
		
		
		//写入字节数据的三种方式
		//1.void write(int b) 将指定字节写入此文件输出流,一次只能写入一个字节数据
		//f.write(97);//a
		
		//2.void write(byte[] b) 将b.length字节从指定字节数组写入此文件输出流
		//(一次写一个字节数组)
		//byte[] getBytes() 根据字符串得到一个字节数组  例:byte[] b="abc".getBytes();
		 byte[] b= {97,98,99};
		//f.write(b);//abc
		
		//3.void write(byte[] b,int off ,int len); 将len字节从指定的字节数组开始,从偏移量off开始写入到此文件输出流
		//(一次写一个字节数组的部分数据)
		f.write(b,0,2);//ab 从b数组的第0个元素开始,写入两个元素
		
		//void close() 关闭此文件输出流并释放与此流相关的任何系统资源
		//f.close();
		
	}

}

 

字节流实现换行

     \r\n(windows); \n(Linux); \r(mac)
        

 字节流实现追加写入 
    public FileOutputStream(String name,boolean append)
    创建文件输出流以指定的名称写入文件,如果第二个参数为true,则字节将写入文件的末尾而不是开头

   FileOutputStream ff=new FileOutputStream("D:\\FILE\\java.txt",true);
        ff.write(d);

 

字节流写数据加入异常处理 finally
        被finally控制的语句一定会执行,除非jvm退出,常用于io流中的释放资源

try{

      可能出现的异常代码;} 

catch(异常类名 异常变量名){

      异常的处理代码} 

finally{

       执行所有的清除操作;}

package IO;

import java.io.FileOutputStream;
import java.io.IOException;

public class Yichang {

	public static void main(String[] args) {

		FileOutputStream f=null;//需要在try语句之外初始化,否则f.close()会报错
		try {
			f=new FileOutputStream("D://java.txt");
			f.write(99);
		}catch(IOException e) {
			e.printStackTrace();
		}finally {
			
			if(f!=null) {
				
				try {
					f.close();
				}catch(IOException e){
					e.printStackTrace();
				}
	
			}
			
		}


	}

}

文件输入流 FileInputStream 从文件系统中的文件获取输入字节

import java.io.FileInputStream;
import java.io.IOException;

public class Ffileinputstream {

	public static void main(String[] args) throws IOException {
		
		//FileInputStream(String name) 通过打开与实际文件的连接来创建一个FileInputStream,该文件由文件系统中的路径名name来命名
		FileInputStream f=new FileInputStream("D:\\FILE\\java.txt");
		
		//三种读取数据的方式
		//int read(byte[] b) 从该输出流读取最多b.length个字节的数据到一个字节数组
		//int read(byte[] b, int off, int len) 从偏移量off开始将最多len字节的数据读入到一个字节数组。
		//int read() 从该输出流获取一个字节的数据,如果达到文件末尾则返回-1
		int i=f.read();
		while(i!=-1) {
	   //这两步可优化为 int i;while((i=f.read())!=-1){}
			System.out.print((char)i);
		}
		
		
		f.close();
		
	}

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老坛酸菜吃鸭子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值