zoukankan      html  css  js  c++  java
  • 03 JAVA IO

    java.io包中定义了多个流类型来实现输入输出功能,以不同的角度进行分类:

      按数据流的方向不同可以分为输入流和输出流

      按处理数据单位不通可以分为字节流和字符流

      按照功能不同可以分为节点流和处理流

    所有流类型位于包java.io内都分别继承自一下四种抽象流类型

    节点流可以从一个特定的数据源读写数据

    处理流是“”连接“”在已存在的流之上,通过对数据的处理为程序提供更为强大的读写功能

    InputStream

    继承自InputStream的流都是用于向程序中输入数据,且数据的单位为字节(8bit)

    下图中深色为节点流、浅色为处理流

    OutputStream

    继承自OutputStream的流都是用于程序中输入数据,且数据的单位为字节(8bit)

    下图中深色为节点流、浅色为处理流

     

    Reader

    继承自Reader的流都是用于向程序中输入数据,且数据的单位为字符(16bit)

    下图中深色为节点流、浅色为处理流

     

    Writer

    继承自Writer的流都是用于程序中输入数据,且数据的单位为字符(16bit)

    下图中深色为节点流、浅色为处理流

    几个程序小例子来阐明具体用法:

    FileInputStream和FileOutputStream用法

    FileInputStream和FileOutputStream是字节流,只能单个字节传递,而汉字是双字节的,所以不能识别汉字

    import java.io.*;
    
    
    public class IOtest {
    
        public static void main(String[] args)
        {
            int b=0;
            FileInputStream in=null;
            FileOutputStream out=null;
            try {
                in=new FileInputStream("g:/1.txt");
                out=new FileOutputStream("g:/2.txt");
                while((b=in.read())!=-1)//in.read()不为-1说明还未访问完输入流
                {
                    out.write(b);//按照字节写入
                }
                in.close();
                out.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            
            
        }
    }

    FileReader和FileWriter用法

    FileReader和FileWriter是字符流,可以传递汉字

    import java.io.FileReader;
    import java.io.FileWriter;
    
    
    public class Reader_writer {
    
        public static void main(String[] args) {
            int c=0;
            FileReader fr=null;
            FileWriter fw=null;
            try {
                fr=new FileReader("g:/1.txt");
                fw=new FileWriter("g:/2.txt");
                while((c=fr.read())!=-1)
                {
                    fw.write(c);
                }
                fr.close();
                fw.close();
            } catch (Exception e) {
        
            }
        }
    
    }

    BufferInputStream套接FileInputStream用法

    import java.io.BufferedInputStream;
    import java.io.FileInputStream;
    
    
    public class BufferInputStream {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
            try {
                FileInputStream fis=new FileInputStream("g:/1.txt");
                BufferedInputStream bis=new BufferedInputStream(fis);//对象流
                int c=0;
                System.out.println(bis.read());
                System.out.println(bis.read());
                bis.mark(0);//标记位置0
                for(int i=0;i<10&&(c=bis.read())!=-1;i++)
                {
                    System.out.println((char)c+" ");
                }
     
                bis.reset();//回到标记位置,即位置0
                for(int i=0;i<10&&(c=bis.read())!=-1;i++)
                {
                    System.out.println((char)c+" ");
                }
                bis.close();  
            } catch (Exception e) {
                // TODO: handle exception
            }
            
        }
    
    }

     未完待续

  • 相关阅读:
    干掉你的老板(小游戏)
    SEO优化数据系列表(图)
    javascript动态加载三
    javascript动态加载二
    截屏
    vimdiff
    pscp scp ftp samba windows send files to linux
    login windows 10 with passwd instead of pin
    modify requirements.txt
    整片注释 ,shell
  • 原文地址:https://www.cnblogs.com/brucekun/p/7647806.html
Copyright © 2011-2022 走看看