IO流 p4 FileReader 和 FileWriter

这篇具有很好参考价值的文章主要介绍了IO流 p4 FileReader 和 FileWriter。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

FileReader 和 FileWriter

一、 FileReader 和 File Writer 介绍

FileReader 和 FileWriter 是字符流,即按照字符来操作 io

二、 FileReader 相关方法

IO流 p4 FileReader 和 FileWriter

IO流 p4 FileReader 和 FileWriter

  • 构造方法摘要
Constructor and Description
FileReader(File file)创建一个新的 FileReader ,给出 File读取。
FileReader(String fileName)创建一个新的 FileReader ,给定要读取的文件的名称。
FileReader(FileDescriptor fd)创建一个新的 FileReader ,给定 FileDescriptor读取。
  • 相关方法摘要
Modifier and Type Method and Description
int read()每次读取单个字符,返回该字符,如过达到文件末尾返回-1
int read(char[])批量读取多个字符到数组中,返回读取到的字符数,如过达到文件末尾返回-1
  • 相关API:

    1. new String(char[]):将char[]转换成String
    2. new String(char[], off, len):将char[]的指定部分转换成String
  • 代码演示:

    import org.junit.jupiter.api.Test;
    
    import java.io.FileReader;
    import java.io.IOException;
    
    /**
     * @author
     * @version 1.0
     */
    public class FileReader_ {
        public static void main(String[] args) {
    
        }
        /**
         * 单个字符读取
         */
        @Test
        public void fileReader01(){
            String filePath = "e:\\story.txt";
            //创建FileReader对象
            FileReader fileReader = null;
            int data = 0;
            try {
                fileReader = new FileReader(filePath);
                //循环读取
                while((data = fileReader.read()) != -1){
                    System.out.print((char)data);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                try {
                    if(fileReader != null)
                        fileReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
        /**
         * 字符数组读取
         */
        @Test
        public void fileReader02(){
            String filePath = "e:\\story.txt";
    
            FileReader fileReader = null;
            int readLen = 0;
            char[] buf = new char[8];
            try {
                //创建FileReader对象
                fileReader = new FileReader(filePath);
                //循环读取
                while((readLen = fileReader.read(buf)) != -1){
                    System.out.print((new String(buf, 0, readLen)));
                }
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                try {
                    if(fileReader != null)
                        fileReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    
    

三、 FileWriter 相关方法

IO流 p4 FileReader 和 FileWriter

IO流 p4 FileReader 和 FileWriter

  • 构造方法摘要
Constructor and Description
FileWriter(File file)给一个File对象构造一个FileWriter对象。
FileWriter(File file, boolean append)给一个File对象构造一个FileWriter对象。
FileWriter(String fileName)构造一个给定文件名的FileWriter对象。
FileWriter(String fileName, boolean append)构造一个FileWriter对象,给出一个带有布尔值的文件名,表示是否附加写入的数据。
FileWriter(FileDescriptor fd)构造与文件描述符关联的FileWriter对象。
  • 相关方法摘要
Modifier and Type Method and Description
void writer()写入单个字符
void writer(char[])写入指定数组
void writer(char[], int off, int len)写入指定数组的指定部分
void writer(String str)写入整个字符串
void writer(String str, int off, int len))写入字符串的指定部分
  • 相关API:String类:toCharArray():将String转换成char[]

  • 注意:FileWriter使用后,必须要关闭(close)或刷新(flush),否则写入不到指定的文件。在Java中使用带有缓冲的流时进行文件写入时,数据首先被缓存在内存中。当缓冲区满或者close()或flush()方法被调用时,缓冲区中的数据才会被真正地写入到文件中。如果没有关闭流或者flush缓冲区,缓冲区中的数据就会一直保留在内存中,而不会被写入到文件中。如果程序突然崩溃或者关闭,这些缓冲的数据将会丢失,这可能会导致数据的不完整或者文件损坏。

  • 代码演示:文章来源地址https://www.toymoban.com/news/detail-472344.html

    import java.io.FileWriter;
    import java.io.IOException;
    
    /**
     * @author
     * @version 1.0
     */
    public class FileWriter_ {
        public static void main(String[] args) {
            String filePath = "e:\\note.txt";
            FileWriter fileWriter = null;
            char[] chars = {'a','b','c'};
            try {
                //创建FileWriter对象
                fileWriter = new FileWriter(filePath);//默认是覆盖写入
                //这种构造方法在使用FileWriter时,如果文件不存在,则会自动创建一个新的文件,
                // 如果文件已经存在,则会直接打开该文件并清空原有内容,从文件的开头开始写入新的内容。
                //1. writer(int):写入单个字符
                fileWriter.write('H');
                //2. writer(char[]):写入指定数组
                fileWriter.write(chars);
                //3. writer(char[], off, len):写入指定数组的指定部分
                fileWriter.write("中国四大名著".toCharArray(), 0, 3);
                //4. writer(string):写入整个字符串
                fileWriter.write("猪八戒娶媳妇");
                //5.writer(string, off, len):写入字符串的指定部分
                fileWriter.write("三打白骨精",0,2);
                //在数据量大的情况下可以循环操作
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                //对应FileWriter,一定要关闭流,或者flush才能真正的把数据写入文件中
                //看源码就知道原因
                /*
                    源码:
                    private void writeBytes() throws IOException {
                        this.bb.flip();
                        int var1 = this.bb.limit();
                        int var2 = this.bb.position();
    
                        assert var2 <= var1;
    
                        int var3 = var2 <= var1 ? var1 - var2 : 0;
                        if (var3 > 0) {
                            if (this.ch != null) {
                                assert this.ch.write(this.bb) == var3 : var3;
                            } else {
                                this.out.write(this.bb.array(), this.bb.arrayOffset() + var2, var3);
                            }
                        }
    
                        this.bb.clear();
                    }
                 */
                //在Java中使用FileWriter进行文件写入时,数据首先被缓存在内存中。当缓冲区满或者close()或flush()方法被调用时,缓冲区中的数据才会被真正地写入到文件中。
                //
                //如果没有关闭流或者flush缓冲区,缓冲区中的数据就会一直保留在内存中,
                // 而不会被写入到文件中。如果程序突然崩溃或者关闭,这些缓冲的数据将会丢失,
                // 这可能会导致数据的不完整或者文件损坏。
                try {
                    fileWriter.close();
                    //关闭文件流,等价于flush() + 关闭
    //                fileWriter.flush();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            System.out.println("程序结束");
        }
    }
    
    

到了这里,关于IO流 p4 FileReader 和 FileWriter的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • IO流 详细介绍

    1.IO:输入(Input读取数据)/输出(Output写数据) 2.流:是一种抽象概念,是对数据传输的总称,也就是说数据在设备间的传输称为流,流的本质是数据传输,IO流就是用来处理设备间数据传输问题的。 3.常见的应用:文件上传、下载、复制等。 文件通常是由一连串的字节或字符构成

    2024年02月12日
    浏览(35)
  • Android MediaTek bootloader 的序列号长度 & 移除非字母和数字限制 SN-Writer工具支持写入

    目录 修改的文件: 文件修改说明: 这个是我在mtk芯片方案android 5.1的修改 , 据我所知12版本以内都是这么改 灰常简单 希望能帮助有需要的人。 主要对 MediaTek bootloader 的序列号长度和打印设置进行了优化,提高了序列号的长度,并改变了打印设置,使其在构建中也能打印调试

    2024年02月13日
    浏览(61)
  • Java IO流 - 打印流详细使用介绍

    打印流基本使用 打印流 : 作用:打印流可以 实现更方便、更高效的打印数据到文件中去 。打印流一般是指:PrintStream,PrintWriter两个类。 可以实现 打印什么数据就是什么数据 ,例如打印整数97写出去就是97,打印boolean的true,写出去就是true。 打印流PrintStream构造器如下 : 构

    2024年02月02日
    浏览(45)
  • 【python】io.BytesIO简要介绍及示例

    io.BytesIO 是 Python 内置的一个 I/O 类,用于在内存中读写二进制数据。它的作用类似于文件对象,但是数据并不是存储在磁盘上,而是存储在内存中的字节串。你可以像文件对象一样对其进行读写、查找和截断等操作。通常用来操作二进制数据,如图片、音频、视频等。也可以

    2024年02月04日
    浏览(54)
  • 谈谈:File、Blob、FileReader、ArrayBuffer、base64

    JavaScript 提供了一些 API 来处理文件或原始文件数据,例如:File、Blob、FileReader、ArrayBuffer、base64 等。下面就来看看它们都是如何使用的,它们之间又有何区别和联系。 1. Blob Blob全称为binary large Object 即二进制大对象,他是js中的一个对象,表示原始类似文件的数据。MDN中的解

    2024年02月09日
    浏览(49)
  • Js的FileReader读取文件内容(async/await)

      要通过FileReader判断上传的文件是否为图片,可以使用FileReader读取文件内容,并判断文件的MIME类型是否为图片类型。 以下是一个示例代码,可以在文件上传时触发change事件,并检查上传的文件是否为图片类型: 上面的代码首先使用FileReader读取上传的文件,并将文件内容转

    2024年02月09日
    浏览(45)
  • FileReader与URL.createObjectURL实现图片、视频上传预览

    之前做图片、视频上传预览常用的方案是先把文件上传到服务器,等服务器返回文件的地址后,再把该地址字符串赋给img或video的src属性,这才实现所谓的文件预览。实际上这只是文件“上传后再预览”,这既浪费了用户的时间,也浪费了不可轻视的流量。 最近上网查资料才

    2024年02月03日
    浏览(54)
  • 前端FileReader对象实现图片file文件转base64

    1、file转base64具体代码 2、原理解析 ​ 上面封装的方法,其原理主要是借助 FileReader 对象来实现图片格式的转换, FileReader 对象中的 readAsDataURL() 方法,可以读取一个 File 或 Blob 类型的文件,并将其转换为base64格式的字符串。但要注意的一点是:我们通过 readAsDataURL() 方法去读

    2023年04月09日
    浏览(40)
  • 浏览器中处理上传大文件——FileReader.readAsArrayBuffer()方法

    平常从客户端上传文件到服务器端,只需要读取 input 的 File 对象,然后将其塞到 FormData 对象中,然后使用 ajax 发送到服务器端,服务器端会有配套的读文件和写文件的操作。 现在遇到一个问题,就是在本地一个进程中,浏览器和其他代码间数据的发送,因为不经过 HTTP,这

    2024年02月11日
    浏览(39)
  • Golang 中的 io 包详解(五):结构体类型介绍

    实现了 io.Reader 接口,并且进行了功能扩展。R 表示 io.Reader 对象,N 表示最多允许读取的字节数。简单示例如下所示: 当读取的字节数超过限制时,LimitedReader 会自动终止读取并返回一个 io.EOF 错误,表示已经达到了总字节数的限制。 实现了 io.Reader、io.ReaderAt 和 io.Seeker 接口

    2024年02月08日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包