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 相关文章推荐
源码解读Spring-Integration执行过程
Jun 11 Java/Android
分析Netty直接内存原理及应用
Jun 14 Java/Android
浅谈什么是SpringBoot异常处理自动配置的原理
Jun 21 Java/Android
Java SSH 秘钥连接mysql数据库的方法
Jun 28 Java/Android
关于springboot 配置date字段返回时间戳的问题
Jul 25 Java/Android
SpringBoot+VUE实现数据表格的实战
Aug 02 Java/Android
Spring Boot 排除某个类加载注入IOC的操作
Aug 02 Java/Android
Java数据开发辅助工具Docker与普通程序使用方法
Sep 15 Java/Android
Java9新特性之Module模块化编程示例演绎
Mar 16 Java/Android
Java字符缓冲流BufferedWriter
Apr 09 Java/Android
MyBatis核心源码深度剖析SQL语句执行过程
May 20 Java/Android
Android实现获取短信验证码并自动填充
May 21 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
第4章 数据处理-php正则表达式-郑阿奇(续)
2011/07/04 PHP
PHP下打开phpMyAdmin出现403错误的问题解决方法
2013/05/23 PHP
免费手机号码归属地API查询接口和PHP使用实例分享
2014/04/10 PHP
destoon实现调用图文新闻的方法
2014/08/21 PHP
基于PHP常用文件函数和目录函数整理
2017/08/17 PHP
仿百度输入框智能提示的js代码
2013/08/22 Javascript
运用JQuery的toggle实现网页加载完成自动弹窗
2014/03/18 Javascript
javaScript使用EL表达式的几种方式
2014/05/27 Javascript
Javascript学习笔记之函数篇(四):arguments 对象
2014/11/23 Javascript
移动端JQ插件hammer使用详解
2015/07/03 Javascript
JS实现上下左右对称的九九乘法表
2016/02/22 Javascript
js实现商品抛物线加入购物车特效
2020/11/18 Javascript
js中删除数组中的某一元素实例(无下标时)
2017/02/28 Javascript
nodejs服务搭建教程 nodejs访问本地站点文件
2017/04/07 NodeJs
微信小程序实现订单倒计时
2020/11/01 Javascript
js实现带搜索功能的下拉框
2020/01/11 Javascript
vue实现分页的三种效果
2020/06/23 Javascript
vue实践---根据不同环境,自动转换请求的url地址操作
2020/09/21 Javascript
python读写二进制文件的方法
2015/05/09 Python
实例讲解python中的协程
2018/10/08 Python
Python 中Django安装和使用教程详解
2019/07/03 Python
django 框架实现的用户注册、登录、退出功能示例
2019/11/28 Python
pytorch 实现查看网络中的参数
2020/01/06 Python
使用css3 属性如何丰富图片样式(圆角 阴影 渐变)
2012/11/22 HTML / CSS
美国家庭鞋店:Shoe Sensation
2019/09/27 全球购物
俄罗斯马克西多姆家居用品网上商店:Максидом
2020/02/06 全球购物
初中生自我鉴定
2014/02/04 职场文书
《金子》教学反思
2014/04/13 职场文书
关爱残疾人演讲稿
2014/05/24 职场文书
2014最新房贷收入证明范本
2014/09/12 职场文书
欠条样本
2015/07/03 职场文书
2016春季幼儿园小班开学寄语
2015/12/03 职场文书
大学生,三分钟即兴演讲稿
2019/07/22 职场文书
MySQL 如何设计统计数据表
2021/06/15 MySQL
关于python中readlines函数的参数hint的相关知识总结
2021/06/24 Python
Python使用mitmproxy工具监控手机 下载手机小视频
2022/04/18 Python