Java 流的基本讲解

来源:互联网 发布:医学软件下载 编辑:程序博客网 时间:2024/06/05 10:36

java io

流的分类:

根据数据类型:字节流,字符流

根据数据流向:输出流,输入流

区分字节流和字符流:

stream结尾都是字节流reader和writer结尾都是字符流字节流和字符流的内在区别1.读写单位不同2.处理对象不同(字节流可以出来图片,avi 等而字符流只能处理字符类型的数据)3.字节流在操作的时候本身是不会用到缓冲区的,而字符流在操作的时候下后是会用到缓冲区的,是通过缓冲区来操作文件字节流列子:字节流http://files.jb51.net/file_images/article/201311/20131114141246.jpg?20131014141326 常用的流FileInputStream构造器:constructors:FileInputStream(File file);根据File对象打开一个文件的输入连接FileInputStream(String name);根据文件路径打开一个对应文件的输入连接用于对文件内容进行二进制读取,如视频、图片、声音等文本内ObjectInputStream构造器:ObjectInputStream(InputStream in);通过readObject方法反序列化出InputStream对应的对象readObject() ;读取基本数据类型,如readInt();BufferedInputStream构造器:BufferedInputStream(InputStream in) ;BufferedInputStream(InputStream in, int size)使用默认缓存大小BufferedInputStream(InputStream in, int size) ;使用特定缓存大小减少IO访问次数,一次读取多个字节的数据例子:  fileinputstream      //得到文件        File file = new File("d:/test.txt");       //创建一个字节流把文件放进去     FileInputStream  in  = new FileInputStream(file);       //创建一个byte容器     byte[]  bytew=new byte[1024];        //输出流到那个文件      FileOutputStream  out = new FileOutputStream("F:/tetx.txt");        //把文件读入容器     while (in.read(bytew)!=-1) {          //在容器中写入文件到指定位置      ut.write(bytew);          //结束文件      out.flush();           } objectoutputstream    //序列化    Student stu  = new Student();   File file1 = new File("F:/test.txt");   FileOutputStream  in1  = new FileOutputStream(file1);   ObjectOutputStream  obj = new ObjectOutputStream(in1);   obj.writeObject(stu);    obj.flush();   //反序列化    FileInputStream fis = new FileInputStream(file1);      ObjectInputStream ois = new ObjectInputStream(fis);      Student st1 = (Student) ois.readObject();      System.out.println("name = " + st1.show());     ois.close();     fis.close();
BufferedInputStream                      Date d=null;             long start=0L;             long end=0L;             SimpleDateFormat   sdf= null;             sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");              start=System.currentTimeMillis();              d=new Date();              if(d!=null){                     d.setTime(start);              }               System.out.println("开始时间"+sdf.format(d));               File f=new File("D:/360安全浏览器下载/t.zip");             FileInputStream input=new FileInputStream(f);             FileOutputStream  outss = new FileOutputStream("F:/aaa.zip");              // 指定文件带缓冲区的读取流且指定缓冲区大小为2KB              BufferedInputStream bis=new BufferedInputStream(input,100*1024);              BufferedOutputStream  outs = new BufferedOutputStream(outss,100*1024);              byte[] byteArray=new byte[1024];              while(bis.read(byteArray)!=-1){                     outs.write(byteArray);              }              outs.flush();              end=System.currentTimeMillis();              d=new Date();              if(d!=null){                  d.setTime(end);              }              System.out.println("程序执行的结束时间:"+sdf.format(d));              System.out.println(end-start);

        字符流:常用的:  filterwriter,filterreader  用来写入字符文件的便捷类。  inputstreamreader,outputstreamwriter  字符流的基本类  bufferedWriter,bufferedreader  字符流缓冲类例子:          //读入文件到字符流中             FileReader  fr  = new FileReader(file);              //创建一个容器         char[]ter = new char[103];             //把文件写到那里去         FileWriter  fw  = new FileWriter("f:/tet.txt");         //把文件读入到文件中再判断            while (fr.read(ter)!=-1) {             fw.write(ter);           }                  //结束              fw.flush();               
        







0 0