自学内容网 自学内容网

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) {

    }

    @Test
    public 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();
            }
        }
    }

    @Test
    public 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。 关闭以前关闭的流无效。

    @Test
    public 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();
                }
            }
        }
    }


原文地址:https://blog.csdn.net/Code___slave/article/details/142572283

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!