文件输入/输出流

  • 文件输入/输出流程序 运行期间,大部分数据都被存储在 内存中,当程序结束或被关闭时,存储在内存中的数据将会 消失。如果要 永久保存数据,那么最好的办法就是把数据保存到 磁盘的文件中。为此,Java提供了 文件输入/输出流,即 FilelnputStream类FilcOutputSream类FilcRcader类FileWriter类
  • FilelnputStream类 与 FilcOutputSream类Java提供了 操作磁盘文件FilelnpuSueam类FileOutputStream类读取文件内容使用的是FilenputStram类;向 文作中写入内容使用的是 FileOutputStream类)。 FilelnputStream类 与 FilcOutputSream类 操作的数据单元是一个字节,如果文件中有中文字符则占两个字节。FilelnpuSueam类常用的构造方法:构造方法 介绍 FilelnpuSueam(String name); 使用 指定的文件名(name)创建一个FilelnpuSueam对象; FilelnpuSueam(File file); 使用 File对象创建FilelnpuSueam对象。(PS:该方法 允许把文件链接输入流)FileOutputStream类常用的构造方法:构造方法 介绍 FileOutputStream(File file); 使用 File对象创建FileOutputStream对象,为 文件写入数据的文件输出流。 FileOutputStream(File file , boolean whether); 使用 File对象创建FileOutputStream对象,为 文件写入数据的文件输出流,当 whether 为 true 时, 字节写入文件末尾处,而不是覆盖。 FileOutputStream(String name); 使用 指定的文件名(name)创建一个FilelnpuSueam对象, 为文件写入数据的文件输出流。 FileOutputStream(String name , boolean whether); 使用 指定的文件名(name)创建一个FilelnpuSueam对象, 为文件写入数据的文件输出流,当 whether 为 true 时, 字节写入文件末尾处,而不是覆盖。FilelnputStream类与FilcOutputSream类 实例:
mport java.io.*;

public class Demo2 {
    public static void main(String[] args) {
        File file = new File("C:\\12.4.1\\Word.txt");

        /**
         * 输出流 (FileOutputStream)
         */
        FileOutputStream outputStream =null;
        try {
            outputStream=new FileOutputStream(file,true);//输出流 读文件。true:在文件末尾追加内容; fales:替换文件内容;

            String str = "hello word";
            byte by[] = str.getBytes();//字符串转换为字节数组
            try {
                outputStream.write(by);//将字节数组中的数据写入到文件当中
            } catch (IOException e) {
                e.printStackTrace();
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }finally {
            if (outputStream!=null){
                try {
                    outputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        /**
         * 输入流 (FileInputStream)
         */
        FileInputStream fileInputStream = null;
        try {
            fileInputStream = new FileInputStream(file);//输入流 读文件
            byte by1[] = new byte[128];//创建缓冲区
            try {
                int len = fileInputStream.read(by1);//读入缓冲区的总字节数 = 输入流添加到缓冲区
                System.out.println("文件中的数据为:"+new String(by1,0,len));//去空格
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }finally {
            if (fileInputStream!=null){
                try {
                    fileInputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}
  • FileReader类 与 FileWriter类 FileReader类 与 FileWriter类 对应了 FilelnputStream类FilcOutputSream类;其中 读取文件内容使用的是 FileReader类,向 文件写入内容使用的是FileWriter类; FileReader类 与 FileWriter类操作的 数据单元是一个字节,如果文件中有 中文字符,就可以使用 FileReader类 与 FileWriter类读取文件、写入文件就可以 避免乱码的产生。FileReader类 与 FileWriter类 实例:
import java.io.*;

public class Demo3 {
    public static void main(String[] args) {
        File file = new File("C:\\Word.txt");

        /**
         *  字符输出流(FileWriter)
         */
        FileWriter fileWriter = null;

        try {
            fileWriter=new FileWriter(file,true);// true:在源文件后追加新内容; fales:覆盖源文件;
            String str = "神里绫华,参上!";
            fileWriter.write(str);//将字符串写入到文本文档
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (fileWriter != null){
                try {
                    fileWriter.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        /**
         * 字符输入流(FileReader)
         */
        FileReader fileReader = null;
        try {
            fileReader=new FileReader(file);

            char ch[] = new char[1024];//缓冲区
            int i;//已读出的字符数
            while ((i=fileReader.read(ch))!=-1){//循环读取文件中的数据,直到所有字符都读完。
                System.out.println("文件中的内容为"+new String(ch,0,i));
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (fileReader != null){
                try {
                    fileReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

Original: https://www.cnblogs.com/TeaTracing/p/16113749.html
Author: TeaTracing
Title: 文件输入/输出流

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/622627/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • MySQL的插入性能优化

    MySQL的插入性能优化 修改系统变量的方法 一、通过编辑ini配置文件进行修改; 二、通过输入sql命令进行修改; 查询和修改系统变量; 如果要修改全局变量, 必须要显示指定&#…

    数据库 2023年6月14日
    090
  • BeautifulSoup4的使用

    Beautiful Soup 主要是用来解析提取 HTML 和 XML 文件中的数据。 现在官网推荐使用 Beautiful Soup 4 ,已经被移植到了BS4中。 安装 Bea…

    数据库 2023年6月9日
    099
  • 开源者的自我修养|为 ShardingSphere 贡献了千万行代码的程序员,后来当了 CEO

    当一个人处在持续地追求与锋锐地思索状态中,他将收获怎样的价值与自由? 有人说,敲过万行代码的程序员,可以写一份基础版入行指南,给初阶人群作入门参考。码过十万行代码的程序员,能写一本…

    数据库 2023年6月16日
    0107
  • 没有发生GC也进入了安全点?这段关于安全点的JVM源码有点意思!

    文末 JVM 思维导图,有需要的可以自取 熟知并发编程的你认为下面这段代码的执行结果是怎么样的? 我如果说,执行流程是: t1 线程和 t2 线程一直执行 num 的累加操作 主线…

    数据库 2023年6月16日
    099
  • Java 中的异常处理机制

    本篇文章主要介绍了 Java 中的异常 如何处理函数抛出的异常 处理异常的原则 异常处理时,性能开销大的地方 Java 语言在设计之初就提供了相对完善的异常处理机制。 我们首先介绍…

    数据库 2023年6月11日
    0102
  • MySQL数据类型(精)

    数据类型(精) MySQL中的数据类型 整型类型 类型介绍 可选属性 M 显示宽度 不会影响类型的实际宽度 设置字段f1,f2,f3 f1 INT, f2 INT(5), f3 I…

    数据库 2023年5月24日
    087
  • sqlserver 分列

    sql server 数据库中某张表(Person)的数据信息是: Address 1 平山花园-4单元-12幢-203 2 香山花园-3单元-22幢-304 现在有需求是,将地址…

    数据库 2023年6月11日
    080
  • 真正在大厂干了几年,我学会了反内卷[转]

    内卷这个概念的内涵很丰富,与我们的生活息息相关。为了普及和传播知识,我参考了相关的信息,把我个人的粗浅理解奉献给朋友们。 什么是内卷? 内卷 involution,与之对应的是 e…

    数据库 2023年6月14日
    0117
  • ShardingSphere 异构迁移最佳实践:将3.5亿量级的顾客系统 RTO 减少60倍

    Apache ShardingSphere 助力当当 3.5 亿用户量级顾客系统重构,由 PHP+SQL Server 技术栈无缝转型为 Java+ShardingSphere+M…

    数据库 2023年6月16日
    0114
  • 数据库相关工作流程与工具

    在工作过程中分享数据库相关工作的过程: [En] Share the process of database-related work during the work proces…

    数据库 2023年5月24日
    0102
  • 常用API(Java)

    Object 场景:当我们使用toString方法想要输出对象变量时,官方提供的toString方法会直接输出对象所在的地址,而不是我们想要的对象变量,所以我们要把toString…

    数据库 2023年6月16日
    088
  • tomcat

    tomcat 一.简介 二.部署tomcat 一.简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场…

    数据库 2023年6月14日
    087
  • 2022-08-18 MySQL常用函数

    聚合函数 count:计数。count(*)≈count(1)>count(主键) count():MySQL对count()底层优化,count(0)。 count(1) …

    数据库 2023年6月14日
    0129
  • SQL的多表查询

    显示内连接: select 字段列表 from 表1 [inner] join 表2 on 连接条件; (PS:方括号(“[]”)内的为可选项;) (注意:…

    数据库 2023年5月24日
    0109
  • mybatis-延迟加载

    本文主要介绍下mybatis的延迟加载,从原理上介绍下怎么使用、有什么好处能规避什么问题。延迟加载一般用于级联查询(级联查询可以将主表不能直接查询的数据使用自定义映射规则调用字表来…

    数据库 2023年6月16日
    071
  • 机器学习模型太慢?来看看英特尔(R) 扩展加速 ⛵

    💡 作者:韩信子@ShowMeAI📘 机器学习实战系列:https://www.showmeai.tech/tutorials/41📘 本文地址:https://www.showm…

    数据库 2023年6月14日
    083
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球