zoukankan      html  css  js  c++  java
  • Java日志第38天 2020.8.12

    字符输入流

    java.io.Reader

    是字符输入流的最顶层父类,定义了一些共性的成员方法,是一个抽象类

    共性的成员方法:

    - int read():读取单个字符并返回

    - int read(char[] cbuf):一次读取多个字符,将字符读入数组

    - void close():关闭该流并释放与之关联的所有资源

    FileReader

    文件字符输入流

    java.io.FileReader extends InputStreamReader extends Reader

    作用:把硬盘文件中的数据以字符的方式读取到内存中

    构造方法

    FileReader(String name)

    FileReader(File file)

    import java.io.FileReader;
    import java.io.IOException;
    
    public class Demo01Reader {
    
        public static void main(String[] args) throws IOException {
            FileReader fr1 = new FileReader("E:\Java\Practice\src\Practice\demo15\a.txt");
    
            int len;
            while((len = fr1.read()) != -1) {
                System.out.print((char) len);
            }
            System.out.println();
            fr1.close();
            System.out.println("=================");
    
            FileReader fr2 = new FileReader("E:\Java\Practice\src\Practice\demo15\a.txt");
            char[] cs = new char[1024];
            while((len = fr2.read(cs)) != -1) {
                System.out.println(new String(cs, 0, len));
            }
            fr2.close();
        }
    }

    字符输出流

    是所有字符输出流的最顶层的父类,是一个抽象类

    共性的成员方法:

    - void write(int c):写入当个字符

    - void write(char[] cbuf):写入字符数组

    - abstract void wirte(char[] cbuf, int off, int len):写入字符数组的某一部分

    off 数组的开始索引

    len字符个数

    - void write(String str):写入字符串

    - void write(String str, int off, int len):写入字符串的某一部分

    off 字符串的开始索引

    len 字符个数

    - void flush():刷新该流的缓冲

    - void close():关闭此流,但先进行刷新

    FileWrite

    文件字符输出流

    java.io.FileWrite extends OutputStreamWrite extends Writer

    作用:把内存中字符数据写入到文件中

    构造方法

    FileWrite(File file)

    FileWrite(String name)

    void write(int c) 一个字符

    public class Demo01Write {
        public static void main(String[] args) throws IOException {
            FileWriter fw = new FileWriter("E:\Java\Practice\src\Practice\demo15\a.txt");
    
            fw.write(97);
            fw.flush();
            fw.close();
        }
    }

    读取数组或字符串

    import java.io.FileWriter;
    import java.io.IOException;
    
    public class Demo01Write {
        public static void main(String[] args) throws IOException {
            FileWriter fw = new FileWriter("E:\Java\Practice\src\Practice\demo15\a.txt");
    
            char[] cs = {'a', 'b', 'c', 'd', 'e'};
            fw.write(cs);
    
            fw.write(cs,1,3);
    
            fw.write("Hello World!");
    
            fw.write("Hello World",6,5);//World
    
            fw.flush();
            fw.close();
        }
    }

    使用try...catch...finally处理异常

    import java.io.FileWriter;
    import java.io.IOException;
    
    public class TryCatchFinally {
        public static void main(String[] args) {
            FileWriter fw = null;
            try {
                fw=new FileWriter("W:\Java\Practice\src\Practice\demo15\a.txt");
                for (int i = 0; i < 10; i++) {
                    fw.write("Hello World"+(i+1)+"
    ");
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if(fw != null){
                    try {
                        fw.close();
                    } catch (IOException e){
                        e.printStackTrace();
                    }
                }
            }
        }
    }

    注意到计算机中没有W盘,所以程序会报错,结果如下:

    JDK7中的新特性

    在try的后面可以添加一个(),在括号中可以定义流对象

    这个流对象的作用域是在try中

    try中的代码执行完毕会自动把流对象释放,不用写finally

    import java.io.FileWriter;
    import java.io.IOException;
    
    public class TryCatchFinally {
        public static void main(String[] args) {
            try(FileWriter fr = new FileWriter("E:\Java\Practice\src\Practice\demo15\a.txt")){
                fr.write("Hello World");
            }catch(IOException e){
                e.printStackTrace();
            }
        }
    }

    明日任务:继续学习有关流的内容

  • 相关阅读:
    智能车回忆
    自动化面试问题
    先进控制理论(转载)
    电力电子技术(转载)
    微型计算机原理及应用复习(转载)
    c语言中数值交换用值传递和地址传递
    unity调用苹果端方法
    unity调用安卓arr方法
    unity mono单例
    loading通用界面笔记
  • 原文地址:https://www.cnblogs.com/Gazikel/p/13489086.html
Copyright © 2011-2022 走看看