zoukankan      html  css  js  c++  java
  • java:io的基本实例

    一,io的常用类:

      1,File类

      2,OutputStream 字节输出流

      3,InputStream     字节输入流

      4,Writer  字符输出流

      5,Reader 字符输入流

    package io;
    
    import java.io.*;
    
    /*
    字节流
         在JAVA中所有的输入流的父类为: java.io.InputStream,此类是一个抽象类
             一、java.io.FileInputSteram
                     此类为文件输入流。
                 read方法的作用
                     从流(数据来源)中一次返回一个数据字节。如果文件中没有数据字节则会返回-1
                 available方法作用
                     返回当前流有多少个字节可以读。
                 skip(long)
                     跳过指定的指节数。
            二、java.io.FileOutputStream
                 在JAVA中所有的输出流的父类为: java.io.OutputStream,此类是一个抽象类
    
            三、BufferedInputStream BufferedOutputStream
                字节缓冲输入输出流,通过read(byte[]) 与write(byte[])实现,主要用于
                在读取数据字节的时候记录字节数。
    
             注: 以上的流都属于字节流,字节流特点是一次读取一个字节,可以用它来读取任何文件内容。
    
    字符流
           由于字节流一次读取一个字节,因此在读取一些文本内容的时候,效率会比较低,
           因此JDK提供了字符流来读取字符类文件(一次读取二个字节)。
    
           注:字符流也是由字节流来实现,字符流只能读取字符类文件。
            一、java.io.Reader(抽象类)
                    所有字符输入流的父类
            二、java.io.Writer(抽象类)
                    所有字符输出流的父类。
            三、java.io.FileReader
                   文件输入字符流
            四、java.io.FileWrite
                   文件字符输出流
            如果出现字符编码不一至造成的乱码可以使用
               InputStreamReader与 OutputStreamWrite
    
     */
    /**
     * io字节流和字符流的传递方式
     * @author dyb
     *
     */
    public class IoDemoTree {
        public static void main(String[] args) {
    
        }
        /*java本身没有IO的读写功能,它是借助平台(window)自身的读写功能来实现,每调用
          一次read方法与write方法都需要与平台建立一次连接(耗费一定的时间),因此正确的
          操作应该是在建立一次连接后读取尽量多的字节数。
           read(byte[]) 与write(byte[]) 适合不记录读取字节数的情况下一次性读完所有文件内容。
          */
        /**
         * 一次性读完整个文件,使用下列方法。
         * @throws IOException
         */
        public void rw() throws IOException {
                FileInputStream in = new FileInputStream("src/start.mp3");
                FileOutputStream out = new FileOutputStream("src/start_2.mp3");
                long s=System.currentTimeMillis();//获取文件传输开始的的时间
    
                byte[] by=new byte[8194];
                int len = 0;
                while((len=in.read(by))!=-1){
                    out.write(by,0,len);
                }
                in.close();out.close();
    
                long e=System.currentTimeMillis();
                System.out.println(e-s);
    
        }
    
        /**
         * 需要读取记录字节数使得下列方法。
         * @param aa
         * @throws IOException
         */
        public void rw(int aa) throws IOException {
                FileInputStream in = new FileInputStream("src/start.mp3");
                FileOutputStream out = new FileOutputStream("src/start_2.mp3");
                BufferedInputStream bin=new BufferedInputStream(in);
                BufferedOutputStream bout=new BufferedOutputStream(out);
                long s=System.currentTimeMillis();
                int a = 0;
                while((a=bin.read())!=-1){
                    bout.write(a);
                }
                bin.close();bout.close();
                long e=System.currentTimeMillis();
                System.out.println(e-s);
    
        }
    
        /**
         * 需要读取字符类文件并且可以修改字符编码,使用下面方法
         * @param aa
         * @throws IOException
         */
        public void rw(byte  aa) throws IOException{
            InputStreamReader iObj=new InputStreamReader
                    (new FileInputStream("src/action/说明.txt"),"GBK");
            OutputStreamWriter oObj=new OutputStreamWriter
                    (new FileOutputStream("src/action/说明2.txt"),"UTF-8");
            char[] by=new char[8888];
            int len=iObj.read(by);
            while(len!=-1){
                oObj.write(by,0,len);
                len=iObj.read(by);
            }
            iObj.close();
            oObj.close();
        }
    }

    例二:

    复制文件夹下所有的文件

    package io;
    import java.io.*;
    
    /**
     * 使用File复制文件和目录
     * @author dyb
     *
     */
    public class IoDemoTwo {
    
        public static void main(String[] args) throws IOException {
            
            /*st.copy("E:\360SoftMgrGame","E:\360downloads/aaa");*/
        
            IoDemoTwo obj=new IoDemoTwo();
            File src=new File("E:/360SoftMgrGame");
            File target=new File("E:/360downloads");
            if(!target.exists()) 
                target.mkdirs();
                obj.copy(src, target);
            
                    
                   
            }
        
        /*
         * 递归复制下一级目录
         */
        public void copy(File src,File target){
            File[] fs=src.listFiles();
            for(int i=0;i<fs.length;i++){
                   String name=fs[i].getName();
                   File newF=new File(target,name);
                   if(fs[i].isDirectory()){
                        newF.mkdirs();
                       copy(fs[i],newF);
                   }else{
                       rw(fs[i], newF);
                   }
            }
    }
        
        /**
         * 复制文件
         */
        public void rw(File src,File target){
        try {
          FileInputStream in = new FileInputStream(src);
          FileOutputStream out = new FileOutputStream(target);
          byte[] by = new byte[8194];
          int len = 0;
          while ((len = in.read(by)) != -1) {
              out.write(by, 0, len);
          }
          in.close();
          out.close();
        }catch (IOException e){
          e.printStackTrace();;
        }
    
    
            }
        
    }
  • 相关阅读:
    LeetCode Binary Tree Inorder Traversal
    LeetCode Populating Next Right Pointers in Each Node
    LeetCode Construct Binary Tree from Inorder and Postorder Traversal
    LeetCode Reverse Linked List II
    LeetCode Populating Next Right Pointers in Each Node II
    LeetCode Pascal's Triangle
    Palindrome Construct Binary Tree from Preorder and Inorder Traversal
    Pascal's Triangle II
    LeetCode Word Ladder
    LeetCode Binary Tree Zigzag Level Order Traversal
  • 原文地址:https://www.cnblogs.com/dybe/p/8439896.html
Copyright © 2011-2022 走看看