首页 > 其他分享 >p4 FileReader 和 FileWriter

p4 FileReader 和 FileWriter

时间:2023-06-04 20:45:46浏览次数:37  
标签:String p4 int FileReader 写入 char FileWriter

FileReader 和 FileWriter

一、 FileReader 和 File Writer 介绍

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

二、 FileReader 相关方法

  • 构造方法摘要
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 相关方法

  • 构造方法摘要
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缓冲区,缓冲区中的数据就会一直保留在内存中,而不会被写入到文件中。如果程序突然崩溃或者关闭,这些缓冲的数据将会丢失,这可能会导致数据的不完整或者文件损坏。

  • 代码演示:

    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("程序结束");
        }
    }
    
    

标签:String,p4,int,FileReader,写入,char,FileWriter
From: https://www.cnblogs.com/zh-Note/p/17455293.html

相关文章

  • P4942 小凯的数字
    P4942小凯的数字题目和数据范围提示有\(O(1)\)作法。直接拆数字,会TLE$res\mod9=l(l+1)(l+2)...(r-1)r\mod9$找规律不难发现\(\texttt{所有数位的数字之和}\mod9\)即为答案。但直接求所有数位之和明显不行,(数位dp好像可以,也许吧没试过)观察到不需要求出所有......
  • P4036 [JSOI2008] 火星人
    暴力水过了wwwwwwwwwwwwwww#include<bits/stdc++.h>//================================================//#defineLOCALFLANDREKAWAII#ifndefLOCALconstexprintSIZE(1<<20);charin[SIZE],out[SIZE],*p1=in,*p2=in,*p3=out;#definegetchar(......
  • cmd合并多个ts文件,ffmpeg快速转ts为mp4文件,通过m3u8合并文件
    摘自:https://blog.csdn.net/qq_33957603/article/details/1227638891、如何合并多个ts文件进入目录执行如下cmd命令即可copy/b*.tsnew.ts  2、如何将ts转为mp4ffmpeg下载官网:https://ffmpeg.org/github下载稳定版:https://github.com/BtbN/FFmpeg-Builds/releases下......
  • 使用VLC Media Player把mp4转化成mp3
    VLCMediaPlayer是一款免费的工具,它支持Windows、MacOS、Linux、iOS和Android。作为一款免费和跨平台公开资源的多媒体播放器,可播放大多数格式的媒体文件,并且支持转文件。则可以按照下面步骤将您的MP4影片转为MP3音频:步骤1.在计算机上启动VLCMediaPlayer,点击「媒体」并选择......
  • Java-Day-25( 字节输入流 + FileInputStream 和 FileOutputStream + FileReader 和 Fi
    Java-Day-25InputStream(字节输入流)InputStream抽象类是所有类字节输入流的超类InputStream常用的子类FileInputStream:文件输入流BufferedInputStream:缓冲字节输入流ObjectInputStream:对象字节输入流FileInputStream和FileOutputStreamFileInputStream(文......
  • 最完美WIN11_Pro_22H2.22631.1825软件选装纯净版VIP41.8
    【系统简介】=============================================================1.本次更新母盘来自UUP_WIN11_PRO_22H2.22631.1825。进一步精简优化调整。2.只为呈现最好的作品,手工精简优化部分较多。3.OS版本号为22631.1825。个别要求高的就下MSDN吧,里面啥功能都有。4.集成《DrvCeo......
  • FFMpeg笔记(十二)MP4 box解析
      MP4包含3大box。一、ftypfiletypebox,包含视频文件使用的mp4标准,也作为probemp4的标志;二、moov包含媒体的元数据信息,包含一个mvhd(也就是headerbox)和若干个trak(track)。trak包含一条音/视频轨道信息和音视频数据的编码格式、音视频数据样本、chunks的大小,存储位置,PTS等......
  • EasyDSS调用录像回看接口出现报错“请先合成mp4”,是什么原因?
    EasyDSS支持一站式的上传、转码、直播、回放、嵌入、分享功能,具有多屏播放、自由组合、接口丰富等特点。平台可以为用户提供专业、稳定的直播推流、转码、分发和播放服务,全面满足超低延迟、超高画质、超大并发访问量的要求。有用户反馈,在调用录像回看接口中的指定时间段录像播放及......
  • ASEMI代理韦达可控硅2P4M参数,2P4M图片,2P4M大小
    编辑-Z韦达可控硅2P4M参数:型号:2P4M断态重复峰值电压VDRM:600V重复峰值反向电压VRRM:600VRMS导通电流IT(RMS):2A非重复浪涌峰值导通电流ITSM:20A平均栅极功耗PG(AV):0.1W峰值栅极功率PGM:0.5WIGT:50μAVGT:0.6V存储接点温度范围Tstg:-40~150℃工作接点温度范围Tj:-40~110℃ 2P4M封装规格:封装:T......
  • EasyDSS如何调用接口获取录像MP4文件合成状态?
    EasyDSS互联网视频云服务的视频直播/点播功能支持视频采集、编辑、上传、媒体资源管理、自动化转码处理、分发服务等,帮助用户快速搭建拥有极致观看体验、安全可靠的视频直播点播应用。有用户反馈在调用接口时,会出现合成中的字样,并不知道合成的录像MP4文件是否已经合成完毕。今天我......