文件输入/输出流

  • 文件输入/输出流程序 运行期间,大部分数据都被存储在 内存中,当程序结束或被关闭时,存储在内存中的数据将会 消失。如果要 永久保存数据,那么最好的办法就是把数据保存到 磁盘的文件中。为此,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)

大家都在看

  • 手把手教你写一个SpringMVC框架

    一、介绍 在日常的 web 开发中,熟悉 java 的同学一定知道,Spring MVC 可以说是目前最流行的框架,之所以如此的流行,原因很简单: 编程简洁、上手简单! 我记得刚开…

    数据库 2023年6月14日
    077
  • Java基础一—面向对象三大特性

    写在最前 本系列为个人对BAT大厂面试题与全栈知识体系结合的简化梳理及本人在日常学习中一些知识的整理(包括但不限于书本、他人博客、微信公众号等渠道),仅为个人总结学习与整理知识框架…

    数据库 2023年6月6日
    069
  • 如何在MySQL中进行简单的增删改查

    — 创建dept表并设置主键create table dept(deptno int(2) primary key ,dname varchar(14),loc var…

    数据库 2023年6月16日
    096
  • JavaScript进阶内容——BOM详解

    JavaScript进阶内容——BOM详解 在上一篇文章中我们学习了DOM,接下来让我们先通过和DOM的对比来简单了解一下BOM 首先我们先来复习一下DOM: 文档对象模型 DOM…

    数据库 2023年6月14日
    0144
  • MySQL日期时间函数一网打尽

    获取时间 函数 功能 返回格式 CURDATE(), CURRENT_DATE() 返回当前日期,只包含年、月、日 2022-03-08 CURTIME(), CURRENT_TI…

    数据库 2023年6月9日
    057
  • 符合标准的正常工作的对联广告(漂浮广告JS代码)

    符合标准的正常工作的对联广告JS代码(漂浮广告)。DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN…

    数据库 2023年6月11日
    064
  • VScode 添加jvm 启动参数 VScode 添加main方法参数

    问题场景. 本地环境使用的是 jdk 17 我需要在vscode 上运行一个jdk1.8 的项目 结果报错 : module java.base does not “o…

    数据库 2023年6月14日
    080
  • MySQL实战45讲 4,5

    04 | 深入浅出索引(上) 索引的出现其实就是为了提高数据查询的效率,就像书的目录一样 索引的常见模型 哈希表、有序数组和搜索树 哈希表 User2 和 User4 根据身份证号…

    数据库 2023年6月16日
    098
  • podman基础用法

    podman的基础设置和使用 运行示例容器 列出正在运行的容器 检查正在运行的容器 测试httpd服务器 查看容器的日志 查看容器进程pid 对容器执行检查操作 还原容器 迁移容器…

    数据库 2023年6月14日
    0129
  • sed语句用法

    sed编辑器 sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。 sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要…

    数据库 2023年6月14日
    074
  • Mybatis SqlNode源码解析

    1.ForEachSqlNode mybatis的foreach标签可以将列表、数组中的元素拼接起来,中间可以指定分隔符separator <select id="…

    数据库 2023年6月16日
    068
  • 运行jar包使用外部依赖

    nohup java -Dloader.path=”lib/” -Dfile.encoding=utf-8 -jar test.jar > test….

    数据库 2023年6月9日
    051
  • PHP最全编码规约

    1.1 标签 (1)【强制】PHP 程序可以使用或来界定 PHP 代码,在 HTML 页面中嵌入纯变量时,可以使用这样的形式,不可使用其他的标签变种。 正例: (2)【强制】纯 P…

    数据库 2023年6月14日
    0109
  • 2018年最新JAVA面试题总结之框架(4)

    转自于:https://zhuanlan.zhihu.com/p/40098726 1、谈谈对spring框架的了解 ,spring有什么作用(IOC,AOP),spring的核心…

    数据库 2023年6月16日
    076
  • MySQL实战45讲 3

    03 | 事务隔离:为什么你改了我还看不见? 事务 Transaction TRX 事务就是 要保证一组数据库操作,要么全部成功,要么全部失败。 MySQL 原生的 MyISAM …

    数据库 2023年5月24日
    064
  • ArrayList扩容机制

    1.构造函数 有三种 说第一种无参构造,默认初始容量为10 2.add函数 /** * 将指定的元素追加到此列表的末尾。 */ public boolean add(E e) { …

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