关于IO流的自己的理解

来源:互联网 发布:产品外壳设计知乎 编辑:程序博客网 时间:2024/05/17 02:43

  最近看了一些关于输入输出流的视频,对于其中的知识点做了一些总结。

  Java IO包
 1 File 类:Java程序中此类的一个对应硬盘中的一个文件(或者文件目录)或网络中的一个资源。
 File file = new File(绝对路径或者相对路径);
    >File 既可以表示一个文件又可以表示一个文件目录。
    >File类对象是与平台无关的。
    >File类对于文件或者文件目录只能进行新建、删除、看下上层目录等操作,如果涉及到访问文件的内容,File是无能为力的,只能使用
    IO流下提供的相应输入输出流来实现。
    >常把File类的对象作为形参传递给相应的输入输出流的构造器中!
    
 2 IO流的结构(精选部分)
 抽象基类                节点流(文本流)                                        缓冲流(处理流中的一种)
 InputStream         FileInputStream(int read(byte[] b))            bufferedInputStream    (int read(byte[] b))
 OutputStream        FileOutputStream(void write(b,0,len))            bufferedOutputStream(flush())(void write(b,0,len))
 Reader                FileReader(int read(char [] c))                    bufferedReader(readline())(int read(char [] c))或者(String readLine())
 Writer                FileWriter(void write(c,0.len))                    bufferedWriter(flush())(void write(c,0.len))或者(void write(String str))    
 注:1)从硬盘中读入一个文件,文件必须是存在的。若不存在,则会报FileNotFoundException的异常。
     2) 从程序中输出内容到硬盘,若文件存在,那么覆盖文件原先的内容,如果不存在,那么创建文件。
     3)真正开发时,使用缓冲流来代替节点流(效率高)。
     4)最后要关闭相应的流,先关闭输出流,再关闭输入流,此操作放在finally里。
 3 IO流的划分
 1)(占位于程序的角度)按照流的流向不同:输入流、输出流
 2)按照流中的数据单位的不同:字节流、字符流(纯文本文件建议使用字符流,非纯文本只能使用字节流)
 3)按照流的角色的不同:节点流、处理流(节点流直接作用于文件上(4个),除此之外全是处理流)
 
 5、其他的流
     1)转换流:实现字节流与字符流之间的转换。
     inputSteamReader输入时实现字节流到字符流的转换,提高操作的效率(前提数据是文本文件)。
     OutputStreamWriter 输出时实现字符流到字节流的转换(前提数据是文本文件)。
     例子:
     键盘输入字符,遇到e或者exit时,退出,其他情况下,小写转换成大写。
     @Test
    public void test(){
        InputStream is = System.in;
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);
        String str;
        String str1;
        try {
            while(true){
                System.out.println("请输入字符:");
                str = br.readLine();
                if(str.equalsIgnoreCase("e")||str.equalsIgnoreCase("exit")){
                    break;
                }
                str1 = str.toUpperCase();
                System.out.println(str1);
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            if(br!=null){
                try {
                    br.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }    
    }
    2)标准的输入流和输出流
    System.in:从键盘输入数据
    System.out:从显示器输出数据
    3)还有打印流、数据流、对象流、随机存取文件流

1 0
原创粉丝点击