当前位置: 首页 > news >正文

Java重修笔记 第六十天 坦克大战(十)IO 流 - FileReader 和 FileWriter

  • 字符流

        FileReader 和 FileWriter 是文件字符流,是 FileInputStream 和 FileOutputStream 的子类,文件字符流可以读取汉字等多个字节的字符。

  • FileReader 类相关方法
1. 通过文件路径来创建字符输入流

        public FileReader(String fileName) throws FileNotFoundException

        参数:fileName - 要读取的文件的名

        异常:FileNotFoundException - 如果命名文件不存在,是一个目录,而不是常规文件,或者由于某些其他原因无法打开读取

2. 通过 File 类来创建字符输入流

        public FileReader(File file) throws FileNotFoundException

        参数:file - 目标 File 对象

        异常:FileNotFoundException - 如果命名文件不存在,是一个目录,而不是常规文件,或者由于某些其他原因无法打开读取

3. 读取一个字符

        public int read() throws IOException

        返回值:返回一个 0 到 65535( 0x00 - 0xffff )范围内的整数,如果已经达到流的末尾,则返回-1

        异常:IOException - 如果发生I / O错误

4. 批量读取字符

        public int read(char[] cbuf) throws IOException

        返回值:返回读取到的字符数

        参数:cbuf - 将读取到的字符存储在该字符数组中

        异常:IOException - 如果发生I / O错误

5. 关闭流

        public void close() throws IOException

        异常:IOException - 如果发生I / O错误

        说明:关闭流并释放与之相关联的任何系统资源。 一旦流已关闭,进一步的read(),ready(),mark(),reset()或skip()调用将抛出IOException。 关闭以前关闭的流无效。

public class FileReader01 {public static void main(String[] args) {}@Testpublic void m1() {// 使用字符输入流,以单个字符的形式读取文件内容FileReader fileReader = null;int read = 0;try {fileReader = new FileReader("d:\\a.txt");while ((read = fileReader.read()) != -1) {System.out.print((char) read);}} catch (IOException e) {e.printStackTrace();} finally {try {if (fileReader != null) {fileReader.close();}} catch (IOException e) {e.printStackTrace();}}}@Testpublic void m2() {// 使用字符数组的方式读取文件内容FileReader fileReader = null;char[] chars = new char[8];int read = 0;try {fileReader = new FileReader("d:\\a.txt");while ((read = fileReader.read(chars)) != -1) {System.out.print(new String(chars,0,read));
//                for (int i = 0; i < chars.length; i++) {
//                    if (i >= read) break;
//                    System.out.print(chars[i]);
//                }}} catch (IOException e) {e.printStackTrace();} finally {try {if (fileReader != null) {fileReader.close();}} catch (IOException e) {e.printStackTrace();}}}
}

  • FileWriter 类相关方法
1. 通过文件名来创建字符输出流

        public FileWriter(String fileName, boolean append) throws IOException

        参数:fileName - 系统相关的文件名

                   append - 如果是 true ,那么将以追加模式写入数据,不写默认 false 覆盖

        异常:IOException - 如果发生I / O错误

        说明:FileWriter 使用后,必须 close 关闭或者 flush 刷新,否则写入不到指定文件

2. 通过 File 类来创建字符输出流

        public FileWriter(File file, boolean append) throws IOException

        参数:file - 目标 File 对象

                   append - 如果是 true ,那么将以追加模式写入数据,不写默认 false 覆盖

        异常:IOException - 如果发生I / O错误

        说明:FileWriter 使用后,必须 close 关闭或者 flush 刷新,否则写入不到指定文件

3. 写入一个字符

        public void write(int c) throws IOException

        参数:c - int指定要写入的字符

        异常:IOException - 如果发生I / O错误

        说明:FileWriter 使用后,必须 close 关闭或者 flush 刷新,否则写入不到指定文件

4. 写入一个字符数组

        public void write(char[] cbuf) throws IOException

        参数:cbuf - 要写入的字符数组

        异常:IOException - 如果发生I / O错误

        说明:FileWriter 使用后,必须 close 关闭或者 flush 刷新,否则写入不到指定文件

5. 写入字符数组中的一部分

        public abstract void write(char[] cbuf, int off, int len) throws IOException

        参数:cbuf - 目标数组

                   off - 从那个索引下开始写入

                   len - 写入的长度

        异常:IOException - 如果发生I / O错误

        说明:FileWriter 使用后,必须 close 关闭或者 flush 刷新,否则写入不到指定文件

6. 写入一个字符串

        public void write(String str) throws IOException

        参数:str - 要写入的字符串

        异常:IOException - 如果发生I / O错误

        说明:FileWriter 使用后,必须 close 关闭或者 flush 刷新,否则写入不到指定文件

7. 刷新流

        public abstract void flush() throws IOException

        异常:IOException - 如果发生I / O错误

        说明:FileWriter 使用后,必须 close 关闭或者 flush 刷新,否则写入不到指定文件

8. 关闭流

        public abstract void close() throws IOException

        异常:IOException - 如果发生I / O错误

        说明:关闭流之前先刷新。 一旦流已关闭,进一步的 write()或 flush()调用将导致抛出IOException。 关闭以前关闭的流无效。

    @Testpublic void m1() {FileWriter fileWriter = null;char[] chars = {'a', 'b', 'c'};try {fileWriter = new FileWriter("d:\\b.txt", true);fileWriter.write('c');fileWriter.write("测试! 测试!", 0, 3);fileWriter.write(chars, 0, 2);} catch (IOException e) {e.printStackTrace();} finally {if (fileWriter != null) {try {fileWriter.close();} catch (IOException e) {e.printStackTrace();}}}}


http://www.mrgr.cn/news/42939.html

相关文章:

  • Pikachu-Over Permission-水平越权
  • ChatGPT的150个角色提示场景实测(14)化妆师
  • Pikachu-unsafe upfileupload-getimagesize
  • C(十三)while、for、do-while循环综合(一)
  • 德国法院允许非营利组织LAION抓取受版权保护的图像用于AI训练
  • 【hot100-java】【分割回文串】
  • AVL树的实现
  • 英语不好可以学编程吗?
  • SVG 简介
  • C语言 | Leetcode C语言题解之第457题环形数组是否存在循环
  • 云原生(四十六) | MySQL软件安装部署
  • C++ | Leetcode C++题解之第457题环形数组是否存在循环
  • C#串口温度读取
  • Java | Leetcode Java题解之第457题环形数组是否存在循环
  • 【设计模式】软件设计原则——接口隔离迪米特
  • CSRF 漏洞 - 学习手册
  • Java | Leetcode Java题解之第456题132模式
  • C语言高阶【2】--动态内存管理【2】--柔性数组(这是个全新的知识点,不想了解一下吗?)
  • C++入门基础知识99——【关于C++ 成员运算符】
  • Pikachu-Unsafe Fileupload-服务端check