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();
            }

    }

}
时间: 2024-08-06 17:56:26

IO流数据读写总结的相关文章

Java API —— IO流(数据操作流 & 内存操作流 & 打印流 & 标准输入输出流 & 随机访问流 & 合并流 & 序列化流 & Properties & NIO)

1.操作基本数据类型的流 1) 操作基本数据类型 · DataInputStream:数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型.应用程序可以使用数据输出流写入稍后由数据输入流读取的数据. · DataOutputStream:数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中.然后,应用程序可以使用数据输入流将数据读入. package datastreamdemos; import java.io.*; /** * Created b

05.C#常用IO流与读写文件

1.文件系统 (1)文件系统类的介绍 文件操作类大都在System.IO命名空间里.FileSystemInfo类是任何文件系统类的基类:FileInfo与File表示文件系统中的文件:DirectoryInfo与Directory表示文件系统中的文件夹:Path表示文件系统中的路径:DriveInfo提供对有关驱动器的信息的访问.注意,XXXInfo与XXX类的区别是:XXX是静态类,XXXInfo类可以实例化. 还有个较为特殊的类System.MarshalByRefObject允许在支持远

C#常用IO流与读写文件

1.文件系统 (1)文件系统类的介绍 文件操作类大都在System.IO命名空间里.FileSystemInfo类是任何文件系统类的基类:FileInfo与File表示文件系统中的文件:DirectoryInfo与Directory表示文件系统中的文件夹:Path表示文件系统中的路径:DriveInfo提供对有关驱动器的信息的访问.注意,XXXInfo与XXX类的区别是:XXX是静态类,XXXInfo类可以实例化. 还有个较为特殊的类System.MarshalByRefObject允许在支持远

C#常用IO流及读写文件

1.文件系统 (1)文件系统类的介绍 文件操作类大都在System.IO命名空间里.FileSystemInfo类是任何文件系统类的基类:FileInfo与File表示文件系统中的文件:DirectoryInfo与Directory表示文件系统中的文件夹:Path表示文件系统中的路径:DriveInfo提供对有关驱动器的信息的访问.注意,XXXInfo与XXX类的区别是:XXX是静态类,XXXInfo类可以实例化. 还有个较为特殊的类System.MarshalByRefObject允许在支持远

IO流 文件读写

了解: I/O流:字节流(文件拷贝):InputStream  -  FileInputStream  -  BufferedInputStream (字节输入流 读) OutputStream  -  FileOutputStream  -  BufferedOutputStream (字节输出流 写) BufferedInputStream.BufferedOutputStream:访问速度快,无需频繁的访问硬盘. 字符流(字符串读写):Reader  -  FileReader  -  B

java里IO流的逻辑关系

在InputStream里和OutputStream里,提供了以下的针对不同信息来源的IO处理对象: 1)以字节形式,读写内存缓冲区中内容得到的ByteArrayInputStream和ByteArrayOutputStream对象 2)以字符串为对象,读写String累心数据的StringBufferInputStream和StringBufferOutputStream对象. 3)针对文件读写操作的FileInputStream和FileOutputStream对象. 4)针对管道数据读写操

JavaEE基础(二十)/IO流

1.IO流(IO流概述及其分类) 1.概念 IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的类都在IO包中 流按流向分为两种:输入流,输出流. 流按操作类型分为两种: 字节流 : 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的 字符流 : 字符流只能操作纯字符数据,比较方便. 2.IO流常用父类 字节流的抽象父类: InputStream OutputStream 字符流的抽象父类: Reader Writer 3.IO程序书写 使

JavaEE基础(二十二)/IO流

1.IO流(序列流) 1.什么是序列流 序列流可以把多个字节输入流整合成一个, 从序列流中读取数据时, 将从被整合的第一个流开始读, 读完一个之后继续读第二个, 以此类推. 2.使用方式 整合两个: SequenceInputStream(InputStream, InputStream) FileInputStream fis1 = new FileInputStream("a.txt"); //创建输入流对象,关联a.txt FileInputStream fis2 = new F

day20<IO流>

IO流(IO流概述及其分类) IO流(FileInputStream) IO流(read()方法返回值为什么是int) IO流(FileOutputStream) IO流(FileOutputStream追加) IO流(拷贝图片) IO流(拷贝音频文件画原理图) IO流(字节数组拷贝之available()方法) IO流(定义小数组) IO流(定义小数组的标准格式) IO流(BufferedInputStream和BufferOutputStream拷贝) IO流(flush和close方法的区