Java 超详细讲解IO操作字节流与字符流


Posted in Java/Android onMarch 25, 2022

IO操作

Java 超详细讲解IO操作字节流与字符流

字节流

  • java.io.InputStream 输入流,主要是用来读取文件内容的。
  • java.io.OutputStream 输出流,主要是用来将内容字节写入文件的。

FileInputStream

该流用于从文件读取数据,它的对象可以用关键字 new 来创建。

有多种构造方法可用来创建对象。

可以使用字符串类型的文件名来创建一个输入流对象来读取文件

InputStream f = new FileInputStream("D:/hello");

也可以使用一个文件对象来创建一个输入流对象来读取文件。我们首先得使用 File() 方法来创建一个文件对象:

File f = new File("D:/hello");
InputStream in = new FileInputStream(f);

FileOutputStream

该类用来创建一个文件并向文件中写数据。

如果该流在打开文件进行输出前,目标文件不存在,那么该流会创建该文件。

有两个构造方法可以用来创建 FileOutputStream 对象。

使用字符串类型的文件名来创建一个输出流对象:

OutputStream f = new FileOutputStream("D:/hello");

也可以使用一个文件对象来创建一个输出流来写文件。我们首先得使用File()方法来创建一个文件对象:

File f = new File("D:/hello");
OutputStream fOut = new FileOutputStream(f);

字节流读写案例

读取D:/hello.txt文件中的内容再输入到文件D:/test.txt中

public class Mk {
        public static void main(String[] args) throws IOException {
            File file=new File("D://hello.txt");
            File file1= new File("D://test.txt");
            InputStream is=new FileInputStream(file);
            OutputStream out=new FileOutputStream(file1);
            //定义byte数组用来暂存数据
            byte[] buf = new byte[1024];
            //读取Is中的内容存到buf
            is.read(buf);
            //将buf中的内容写入out
            out.write(buf);
            is.close();
            out.close();
        }
        }

字符流

FileReader

写入文件实例

public class A {
    public static void main(String[] args) throws IOException {
        FileWriter fw = new FileWriter("user.txt", true);
        fw.write("你好中国1");
        fw.write("你好中国2");
        fw.write("你好中国3");
        fw.close();
    }
}

Java 超详细讲解IO操作字节流与字符流

Java 超详细讲解IO操作字节流与字符流

FileWriter

读取文件实例

这里我把内容换行了

Java 超详细讲解IO操作字节流与字符流

br.ready()是判断这一行流是否为空

br.readLine()是输出一行,然后自动光标指到下一行。

public class A {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader("user.txt"));
        while (br.ready()) {
            System.out.println(br.readLine());
        }
        br.close();
    }
}

Java 超详细讲解IO操作字节流与字符流

字节流与字符流的区别

字节流和字符流使用是非常相似的,那么除了操作代码的不同之外,还有哪些不同呢?

字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的,而字符流在操作的时候是使用到缓冲区的 字节流在操作文件时,即使不关闭资源(close方法),文件也能输出,但是如果字符流不使用close方法的话,则不会输出任何内容,说明字符流用的是缓冲区,并且可以使用flush方法强制进行刷新缓冲区,这时才能在不close的情况下输出内容

那开发中究竟用字节流好还是用字符流好呢?

在所有的硬盘上保存文件或进行传输的时候都是以字节的方法进行的,包括图片也是按字节完成,而字符是只有在内存中才会形成的,所以使用字节的操作是最多的。 如果要java程序实现一个拷贝功能,应该选用字节流进行操作(可能拷贝的是图片),并且采用边读边写的方式(节省内存)。

到此这篇关于Java 超详细讲解IO操作字节流与字符流的文章就介绍到这了,更多相关Java IO操作内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Java/Android 相关文章推荐
解决tk mapper 通用mapper的bug问题
Jun 16 Java/Android
详解Java实现设计模式之责任链模式
Jun 23 Java/Android
Java数组与堆栈相关知识总结
Jun 29 Java/Android
jackson json序列化实现首字母大写,第二个字母需小写
Jun 29 Java/Android
Jpa Specification如何实现and和or同时使用查询
Nov 23 Java/Android
Java练习之潜艇小游戏的实现
Mar 16 Java/Android
SpringBoot中使用Redis作为全局锁示例过程
Mar 24 Java/Android
Spring事务管理下synchronized锁失效问题的解决方法
Mar 31 Java/Android
Spring Data JPA框架持久化存储数据到数据库
Apr 28 Java/Android
Android存储中最基本的文件存储方式
Apr 30 Java/Android
Spring IOC容器Bean的作用域及生命周期实例
May 30 Java/Android
一文了解Java动态代理的原理及实现
Jul 07 Java/Android
Netty分布式客户端接入流程初始化源码分析
Mar 25 #Java/Android
java后台调用接口及处理跨域问题的解决
Mar 24 #Java/Android
SpringBoot中使用Redis作为全局锁示例过程
Mar 24 #Java/Android
java项目构建Gradle的使用教程
Mar 24 #Java/Android
SpringBoot2零基础到精通之数据与页面响应
MybatisPlus EntityWrapper如何自定义SQL
Mar 22 #Java/Android
SpringBoot2零基础到精通之数据库专项精讲
Mar 22 #Java/Android
You might like
php 伪造本地文件包含漏洞的代码
2011/11/03 PHP
PHP模板引擎Smarty内置变量调解器用法详解
2016/04/11 PHP
Yii2中多表关联查询hasOne hasMany的方法
2017/02/15 PHP
javascript 运算数的求值顺序
2011/08/23 Javascript
window.open关于浏览器拦截问题分析及解决方法
2013/02/05 Javascript
javascript Event对象详解及使用示例
2013/11/22 Javascript
JavaScript中实现Map的示例代码
2015/09/09 Javascript
JavaScript和jquery获取父级元素、子级元素、兄弟元素的方法
2016/06/05 Javascript
JavaScript中的this引用(推荐)
2016/08/05 Javascript
vue.js删除动态绑定的radio的指定项
2017/06/02 Javascript
基于jQuery实现的单行公告活动轮播效果
2017/08/23 jQuery
React-Router如何进行页面权限管理的方法
2017/12/06 Javascript
解决vue无法设置滚动位置的问题
2018/10/07 Javascript
微信小程序分享海报生成的实现方法
2018/12/10 Javascript
使用Vue中 v-for循环列表控制按钮隐藏显示功能
2019/04/23 Javascript
VueCli3.0中集成MockApi的方法示例
2019/07/05 Javascript
webpack4 optimization使用总结
2019/11/10 Javascript
React Native中ScrollView组件轮播图与ListView渲染列表组件用法实例分析
2020/01/06 Javascript
Django框架中render_to_response()函数的使用方法
2015/07/16 Python
Django接受前端数据的几种方法总结
2016/11/04 Python
利用numpy实现一、二维数组的拼接简单代码示例
2017/12/15 Python
对python cv2批量灰度图片并保存的实例讲解
2018/11/09 Python
python 批量解压压缩文件的实例代码
2019/06/27 Python
Python的Tkinter点击按钮触发事件的例子
2019/07/19 Python
python 的numpy库中的mean()函数用法介绍
2020/03/03 Python
详解HTML5中CSS外观属性
2020/09/10 HTML / CSS
Scholastic父母商店:儿童书籍
2017/01/01 全球购物
荷兰鞋子在线:Nelson Schoenen
2017/12/25 全球购物
英国婴儿产品专家:Samuel Johnston
2020/04/20 全球购物
Java模拟试题
2014/11/10 面试题
药剂学专业应届生自荐信
2013/09/29 职场文书
2014学雷锋活动总结
2014/03/09 职场文书
升学宴主持词
2014/04/02 职场文书
医学求职信
2014/05/28 职场文书
初中英语教师个人工作总结2015
2015/07/21 职场文书
「玫瑰之王的葬礼」舞台剧主视觉图公开
2022/03/21 日漫