IO流数据读写总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IO流数据读写总结相关的知识,希望对你有一定的参考价值。

1.用java自带的IO读写方法 官方API网站:http://docs.oracle.com/javase/7/docs/api/

2.Apache的Commons-io-2.4.jar中的方法,参考文档:http://commons.apache.org/proper/commons-io/javadocs/api-2.4/index.html

/*    
 * 用apache的ommons-io-2.4.jar的ileUtils类中的方法读写数据
 * 常用方法请参考帮助文档
 * */
    public  void readWriteCopyFile(){
        File file1 = new File("c:/to.txt");
        File file2 = new File("c:/to_new.txt");
        try {
            String input = FileUtils.readFileToString(file1,"gb2312");
            System.out.println(input);
            FileUtils.copyFile(file1, file2);
        
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
          String fileName = "C:/to.txt";
          File file = new File(fileName);
          String fileContent = "";
         
          fileContent +="Helloworld";
          try {
               FileUtils.writeStringToFile(file, fileContent, "gb2312");
          } catch (IOException e) {
               e.printStackTrace();
            }
    }
    
    /*    
     * 用apache的ommons-io-2.4.jar的ileUtils类中的方法读写数据
     * */
    public  void URLToFileTest(){
        try {
            URL url = new URL("http://www.163.com");  
            
            File file = new File("c:\\163.html");  
              
            FileUtils.copyURLToFile(url, file);
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  
    }  
        
    /*    
     * 用apache的ommons-io-2.4.jar的ileUtils类中的方法读写url内容数据
     * */
    public  void readURL() throws IOException{

        InputStream in = new URL( "http://www.blogjava.net/ashutc/archive/2010/07/13/325933.html" ).openStream();
       
         try {
             
             System.out.println( IOUtils.toString( in ) );
         } finally {
           IOUtils.closeQuietly(in);
         }


    }
    
    /*    
     * 用apache的ommons-io-2.4.jar的ileUtils类中的方法读写url内容数据
     * */
    public  void downTolocal(){


          try {
            InputStream in = new URL("http://img4.cache.netease.com/tech/2015/12/10/201512101531442cb6f_550.png").openStream();
            
              byte [] gif = IOUtils.toByteArray(in);
              //IOUtils.write(gif,new FileOutputStream(new File("c:/test.gif")));    //将字符串内容直接写到文件中
              FileUtils.writeByteArrayToFile(new File("c:/test.png"),gif) ;            //将字节数组内容写到文件中
              System.out.println("done");
              IOUtils.closeQuietly(in);
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


    }
      
    /*
     * 使用java自带的带有缓存区字节读写数据---提高读写速度
     *  
     */
    public void RwByByteStream() {

            File fileIn = new File("D:/java.docx");
            File fileOut = new File("D:/java_new.docx");
            long before = System.currentTimeMillis();
            FileInputStream fis = null;
            FileOutputStream fos = null;
            try {
                fis = new FileInputStream(fileIn);
                fos = new FileOutputStream(fileOut);
            } catch (FileNotFoundException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            
            BufferedInputStream bis = new BufferedInputStream(fis,100000);        //设置缓冲区及大小
            BufferedOutputStream bos = new BufferedOutputStream(fos,100000);    //设置输出流缓冲区及大小
            byte [] buffer = new byte[10000];
            int l;
            int num = 0;
            try {
                while((l=bis.read(buffer))!=-1){
                    bos.write(buffer, 0, l);
                    num++;
                }
                System.out.println(System.currentTimeMillis()-before+"ms");
                System.out.println(num);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            finally{
                try {
                    bos.close();
                    fos.close();
                    bis.close();
                    fis.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
    

    }

    

    /*
     * 使用java字符流读写数据
     * 
     * */
    public void RWByCharStream() {
            
            try {
                //File file = new File("d:/java.txt");
                FileInputStream fis = new FileInputStream("d:/java.txt");
                FileOutputStream fos = new FileOutputStream("d:/java_new.txt",true);
                InputStreamReader isr = new InputStreamReader(fis, "gb2312");
                OutputStreamWriter osw = new OutputStreamWriter(fos, "gb2312");
                char input[] = new char[100];
                int l = 0;
                while ((l = isr.read(input)) != -1) {
                    //String inputString = new String(input,0,l);
                    osw.write(input,0,l);
                }
                isr.close();
                fis.close();
                osw.close();
                fos.close();
                System.out.println("done");
                
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
    }    
    
    /*
     * 使用java缓冲区字符流读写数据
     * 
     * */
    public void RWByBufferedCharStream() {
        
            try {
                
                //File file = new File("d:/java.txt");
                FileInputStream fis = new FileInputStream("d:/java.txt");
                FileOutputStream fos = new FileOutputStream("d:/java_new.txt",true);    //加true表示追加写到这个文件中,否则覆盖此文件    
                InputStreamReader isr = new InputStreamReader(fis, "gb2312");
                OutputStreamWriter osw = new OutputStreamWriter(fos, "gb2312");
                
                BufferedReader br = new BufferedReader(isr);    //设置缓冲区
                BufferedWriter bw = new BufferedWriter(osw);
//                PrintWriter pw = new PrintWriter(osw);
                
                String input;
                while ((input = br.readLine()) != null) {
                    bw.write(input);
                    bw.newLine();
                    System.out.println(input);
//                    pw.println(input);
                }
                br.close();        //各流后打开的先关闭,先打开后关闭
                bw.flush();
                bw.close();
//                pw.close();
                isr.close();
                fis.close();
                osw.close();
                fos.close();
                System.out.println("done");

            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
    
    }
    
}

 

以上是关于IO流数据读写总结的主要内容,如果未能解决你的问题,请参考以下文章

Java文件IO流的操作总结

学习笔记-java IO流总结 转载

Java基础总结--IO总结1

Java IO基础总结

第十周学习总结

java内存流:java.io.ByteArrayInputStreamjava.io.ByteArrayOutputStreamjava.io.CharArrayReaderjava.io(代码片段