文件字符流
  TEZNKK3IfmPf 2023年11月13日 36 0

2. FileReader 和 FileWriter 介绍  618

文件字符流

3. FileReader 相关方法:618

1) new FileReader(File/String)

2) read:每次读取单个字符,返回该字符,如果到文件末尾返回-1

3) read(char[]): 批量读取多个字符到数组,返回读取到的字符数,如果到文件末尾返回-1相关API:

1) new String(char[]):将char[]转换成String

2) new String(char[],off,len):将char[]的指定部分转换成String

4. FileWriter 常用方法  618

1) new FileWriter(File/String):覆盖模式,相当于流的指针在首端

2) new FileWriter(File/String,true):追加模式,相当于流的指针在尾端

3) write(int):写入单个字符

4) write(char[]):写入指定数组

5) write(char[],off,len):写入指定数组的指定部分

6) write (string) :写入整个字符串

7) write(string,off,len):写入字符串的指定部分

相关API: String类: toCharArray:将String转换成char[]

➢注意:

FileWriter使用后,必须要关闭(close)或刷新(flush), 否则写入不到指定的文件!

5. FileReader 和 FileWriter 应用案例  619

5.1 FileReader 字符输入流  619

使用 FileReader 从 story.txt 读取内容,并显示

代码在com.stulzl.fileread_.包中

FileRead_

package com.stulzl.fileread_;

import org.junit.jupiter.api.Test;

import javax.annotation.processing.SupportedAnnotationTypes;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

// FileReader 字符输入流  619
//使用 FileReader 从 story.txt 读取内容,并显示
public class FileRead_ {
    public static void main(String[] args) {

    }
    //单字符读取文件
    @Test
    public void readFile01(){
        String filePath = "e:\\story.txt";
        FileReader fileReader = null;
        int data = 0;//也是用来存放read()的返回值
        try {
            //创建FileReader对象
            fileReader = new FileReader(filePath);
            //循环读取,使用read,单个字符读取
            while((data = fileReader.read())!=-1){
                System.out.print((char)data);//类型转换,因为data要求是字符类型
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if(fileReader!=null) {
                    fileReader.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    //使用字符数组读取文件
    @Test
    public void readFile02(){
        System.out.println("第二种方式");
        String filePath = "e:\\story.txt";
        FileReader fileReader = null;
        int readLen = 0;//也是用来存放read(buf)的返回值
        char[] buf = new char[8];
        try {
            //创建FileReader对象
            fileReader = new FileReader(filePath);
            //循环读取,使用read(buf), 返回的是实际读取到的字符数
            //如果返回-1, 说明到文件结束
            while((readLen = fileReader.read(buf))!=-1){
                System.out.print(new String(buf,0,readLen));//类型转换,因为data要求是字符类型
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if(fileReader!=null) {
                    fileReader.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

5.2 FileWrite字符输出流  620

使用 FileWriter 将 “风雨之后,定见彩虹” 写入到 note.txt 文件中, 注意细节

代码在com.stulzl.filewrite_.包中

FileWrite_

package com.stulzl.filewrite_;

import java.io.FileWriter;
import java.io.IOException;

//FileWrite字符输出流  620
//使用 FileWriter 将 “风雨之后,定见彩虹” 写入到 note.txt 文件中, 注意细节
public class FileWrite_ {
    public static void main(String[] args) {
        String filePath = "e:\\note.txt";
        FileWriter fileWriter = null;
        char[] chars = {'a','b','c'};
        try {
            fileWriter = new FileWriter(filePath);
            //write(int):写入单个字符
            fileWriter.write('h');

            //write(char[]):写入指定数组
            fileWriter.write(chars);


            //write(char[],off,len):写入指定数组的指定部分
            //fileWriter.write(chars,0,2);
            //toCharArray()方法可以将一个字符串转成一个字符数组
            fileWriter.write("中国,你好".toCharArray(),3,2);//你好

            //write (string) :写入整个字符串
            fileWriter.write("你好,中国");
            fileWriter.write("风雨之后,定见彩虹");

            //write(string,off,len):写入字符串的指定部分
            fileWriter.write("你好世界",2,2);//世界

            //在数据量大是可以使用循环

            
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //FileWriter使用后,必须要关闭(close)或刷新(flush), 否则写入不到指定的文件!
            try {
                fileWriter.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

}
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   20天前   46   0   0 java
  TEZNKK3IfmPf   2024年05月31日   54   0   0 java