博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA之IO流(字节流)
阅读量:6221 次
发布时间:2019-06-21

本文共 3059 字,大约阅读时间需要 10 分钟。

输入和输出

JAVA的流分为输入流和输出流两部分,

输入流:InputStream或者Reader:从文件中读到程序中;

输出流:OutputStream或者Writer:从程序中输出到文件中;

Reader和Writer是字符流:只能针对字符文件进行读写操作。

InputStream和OutputStream是二进制流:所有的文件都可以进行读写操作。也就是可以处理所有类型数据,如:图片,MP3,AVI视频文件,而字符流只能处理字符数据。只要是处理纯文本数据,就要优先考虑使用字符流,除此之外都用字节流。java.io.OutputStream:(抽象类),输出字节流 可以接收待输出的字节并将这些字节发送到某个接收器 。java.io.InputStream: (抽象类),输入字节流,可以将本输入流中的字节读取出来

InputStream和OutputStream

InputStream和OutputStream的部分子类:

字节流:FileInputStream和FileOutputStream

缓冲流:BufferedInputStream和BufferedOutputStream

数据流:DataInputStream和DataOutputStream

对象流:ObjectInputStream和ObjectOutputStream

1.FileInputStream和FileOutputStream的应用

FileInputStream是InputStream的子类 文件输入流,可以从文件系统中的某个文件中获得输入字节,把他输入到我们的程序中;

FileOutputStream 是OutputStream的子类,文件输出流, 可以从byte数组中接收数据并将数据写入某个文件。

FileInputStream类的使用:

简单地来说,FileInputStream流的使用,有6个步骤:

    • 根据path路径实例化一个输入流的对象,在该方法中会抛出一个文件找不到的时候的一个异常,所以我们在用的时候也要特别注意不要文件路径是否正确,以及文件是和存在;
FileInputStream fis=null;		try {			// 根据path路径实例化一个输入流的对象			 fis  = new FileInputStream(path);		} catch (FileNotFoundException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}
    • 在数据流创建好之后,就可以获取在这个输入流中可以被读的剩下的byte字节的估计值
    • .然后根据我们获取的这个数据去创建一个byte数组
    • 在然后把我们要读取的数组读到数组中
    • 获取到byte数组之后,根据byte数组去创建一个string字符串;我们可以把这个字符串输出来检查我们是否获取到了数据
    • 要注意的是,在我们获取完数组之后,我们需要去关闭我们的FileInputStream对象;也就是把文件与程序之间的通道关闭;代码如下:
/**	 * 读取文件中的数据的方法;	 * @param path要读取得文件的路径和文件全名;	 * @return 返回读取到的文件中的字符串;	 */	// @SuppressWarnings("finally")	public String readFile(String path) {
// 实例化FileInputStream对象;                  FileInputStream fis = null; 		String str = null;
try {		// 1.根据path路径实例化一个输入流的对象			fis = new FileInputStream(path);          //2. 返回这个输入流中可以被读的剩下的bytes字节的估计值;			int size = fis.available();    //3. 根据输入流中的字节数创建byte数组;			byte[] array = new byte[size];			fis.read(array);//4.把数据读取到数组中;                //5.根据获取到的Byte数组新建一个字符串,然后输出;			str = new String(array);			                                       System.out.println(str);//输出;		} catch (FileNotFoundException e) {		// 解决new FileInputStream(path);可能会发生的异常;			e.printStackTrace();		} catch (IOException e) {			// 解决fis.available()时可能发生的异常;			e.printStackTrace();		} finally {			//6.在最后,关闭我们的IO流			try {				fis.close();			} catch (IOException e) {				e.printStackTrace();			}		}		return str;	}

FileOutputStream的使用:

    • 根据文件路径创建输出流
    • 把string转换为byte数组
    • 把byte数组输出
    • 关闭数据流;
/**	 * 将数据写入到文件中的方法;	 * @param path要写入的文件的路径和文件全名;	 * @param content 要从程序写入文件的字符串	 */	public void writeFile(String path, String content) {		FileOutputStream fos = null;		try {                       //1.根据文件路径创建输出流			fos = new FileOutputStream(path);                       //2.把string转换为byte数组;			byte[] array = content.getBytes();		       //3.把byte数组输出;                        fos.write(array);		} catch (FileNotFoundException e) {			// 解决new FileOutputStream(path)出现的问题			e.printStackTrace();		} catch (IOException e) {			// 解决fos.write(array)可能会出现的问题;			e.printStackTrace();		} finally {			/*			 * 在方法的最后一定实现这个方法;			 */			try {//4.关闭IO流				fos.close();			} catch (IOException e) {				e.printStackTrace();			}		}	}

转载于:https://www.cnblogs.com/hesi/p/6089085.html

你可能感兴趣的文章
Tomcat启动时项目重复加载
查看>>
lvs + lamp的配置步骤
查看>>
Android.mk详解
查看>>
子网掩码划分
查看>>
开源SIP服务器加密软件NethidPro升级
查看>>
微软核心基础架构优化模型[CIO]
查看>>
同步工具之Exchanger实现线程间的数据交换
查看>>
下周三,阿里云首届分享日×云栖大会北京峰会,我们不见不散!
查看>>
我的友情链接
查看>>
完爆 Best Fit,看阿里如何优化 Sigma 在线调度策略节约亿级成本
查看>>
最严新规发布 网络短视频平台该如何降低违规风险?
查看>>
我的友情链接
查看>>
“不是不需要运维工程师,是人人皆是运维”|对话阿里云MVP蒋烁淼(上)
查看>>
我的友情链接
查看>>
Linux服务器环境下Apache性能优化的技巧
查看>>
解读 KubeCon EU 2019 应用管理领域的新看点
查看>>
标准MFC WinSock ActiveX控件开发实例(基础篇)
查看>>
关于网站404页面产生302状态的问题
查看>>
nginx日志分析
查看>>
Could not reliably determine the server's fully
查看>>