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 相关文章推荐
Java输出Hello World完美过程解析
Jun 13 Java/Android
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
Jun 21 Java/Android
SpringBoot集成Redis,并自定义对象序列化操作
Jun 22 Java/Android
一篇文章带你复习java知识点
Jun 28 Java/Android
Mybatis-plus在项目中的简单应用
Jul 01 Java/Android
dubbo集成zipkin获取Traceid的实现
Jul 26 Java/Android
springboot中的pom文件 project报错问题
Jan 18 Java/Android
java objectUtils 使用可能会出现的问题
Feb 28 Java/Android
关于EntityWrapper的in用法
Mar 22 Java/Android
Android基于Fresco实现圆角和圆形图片
Apr 01 Java/Android
Java 常见的限流算法详细分析并实现
Apr 07 Java/Android
SpringBoot项目部署到阿里云服务器的实现步骤
Jun 28 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截取utf-8中文字符串乱码的解决方法
2010/03/29 PHP
非常全面的php日期时间运算汇总
2015/11/04 PHP
Yii CGridView用法实例详解
2016/07/12 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
2018/12/18 PHP
列表内容的选择
2006/06/30 Javascript
jquery中输入验证中一个不错的效果
2010/08/21 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
2013/01/11 Javascript
jquery 淡入淡出效果的简单实现
2014/02/07 Javascript
jQuery中html()方法用法实例
2014/12/25 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
2016/08/01 Javascript
浅析ES6的八进制与二进制整数字面量
2016/08/30 Javascript
Javascript的this用法
2017/01/16 Javascript
vue2.0实现分页组件的实例代码
2017/06/22 Javascript
浅谈js基础数据类型和引用类型,深浅拷贝问题,以及内存分配问题
2017/09/02 Javascript
详解基于Vue-cli搭建的项目如何和后台交互
2018/06/29 Javascript
微信小程序手机号码验证功能的实例代码
2018/08/28 Javascript
微信小程序开发技巧汇总
2019/07/15 Javascript
vue实现移动端触屏拖拽功能
2020/08/21 Javascript
在Python中操作文件之truncate()方法的使用教程
2015/05/25 Python
Python复数属性和方法运算操作示例
2017/07/21 Python
Python创建一个空的dataframe,并循环赋值的方法
2018/11/08 Python
python异步存储数据详解
2019/03/19 Python
基于python实现语音录入识别代码实例
2020/01/17 Python
python 的topk算法实例
2020/04/02 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
2020/05/22 Python
Debenhams百货英国官方网站:Debenhams UK
2016/07/12 全球购物
澳大利亚首屈一指的鞋类品牌:Tony Bianco
2018/03/13 全球购物
戴尔马来西亚官网:Dell Malaysia
2020/05/02 全球购物
吃空饷专项治理工作实施方案
2014/03/04 职场文书
财务科科长岗位职责
2014/03/10 职场文书
2014幼儿教师个人工作总结
2014/12/03 职场文书
会计工作能力自我评价
2015/03/05 职场文书
贴吧吧主申请感言
2015/08/03 职场文书
Win11怎么进入安全模式?Windows 11进入安全模式的方法
2021/11/21 数码科技
Java 数组的使用
2022/05/11 Java/Android
Mysql数据库事务的脏读幻读及不可重复读详解
2022/05/30 MySQL