`
aijuans
  • 浏览: 1549291 次
社区版块
存档分类
最新评论

java文件读写的两种方式

 
阅读更多

今天搞了下java文件的读写,自己也总结了一下,但是不全,只有两种方式,先直接看代码:

复制代码
public static void main(String[] args) throws IOException {
    io();
    buffer();
}

/**
 * 以流的形式读写 可以使用任何文件 特别是二进制文件
 * 
 * @author hh
 * @date 2014-12-11
 * @throws IOException
 */
    public static  void  io() throws IOException {
        String fname = "C:/Users/Administrator/Desktop/T.jar";  
        String fname2 = "C:/Users/Administrator/Desktop/T2.rar";     
        File file = new File(fname);
        File file2 = new File(fname2);
        FileInputStream in = new FileInputStream(file);
        FileOutputStream out = new FileOutputStream(file2);
        byte[] bytes= new byte[2048];
        int k = 0;
        while((k=in.read(bytes))!=-1){
            out.write(bytes);
            /*for (int i = 0; i < bytes.length; i++) {//这样效率很低
                out.write(bytes[i]);
            }*/
        }
        /*或者
         * int b  = 0 ;
        while((b=in.read())!=-1) {            
                out .write(b);  
        } */
        out.close();
        in.close();
        System.out.println("end");
    }
    
    /**
     * 以字符的形式读写 实用文文本文件
     * 不适用与压缩等二进制文件  否者写出来的文件会比源文件大
     * @author hh
     * @date 2014-12-11
     * @throws IOException
     */
  public static void buffer()  throws IOException {
        String fname = "C:/Users/Administrator/Desktop/1234.txt";  
        String fname2 = "C:/Users/Administrator/Desktop/kk.txt";  
        File file = new File(fname); 
        InputStreamReader read = new InputStreamReader(new FileInputStream(file),"GBK");//解决中文乱码 
        //FileReader read =  new FileReader(file);  也可以直接使用FileReader 但是会出想中文乱码
        FileWriter fw = new FileWriter(fname2);
        BufferedReader bufferedReader = new BufferedReader(read);
        BufferedWriter b = new BufferedWriter(fw);
        String s =null;
        while ((s = bufferedReader.readLine()) !=null) { 
            System.out.println(s);
                b.write(s);    
                b.newLine();//换行
                b.flush();
            
        }
        b.close();
        read.close();
        fw.close();
        System.out.println("---end");
  }
复制代码

第一种使用的是FileInputStream和FileOutputStream,这种方式是直接使用io流读数据。不管什么文件可以搞定。但是缺点是没读一次就要进行一次io操作,若是文件大了,销量很低。

第二种使用BufferedReader 和BufferedWrite。与前面的区别是使用了缓存,读取的是字符(FileInputStream是字节)。所以之前在使用BufferedReader BufferedWrite复制一个压缩文件时,复制后的文件总是原文件大小的2倍。

3
1
分享到:
评论

相关推荐

    java读写hdf5格式文件需要使用的库

    压缩包中包含java读写hdf5格式文件时需要的jar包和动态链接库,动态链接库提供了windows、linux两种版本的

    Java文件、文件夹权限修改的两种方法

    主要给大家介绍了关于Java文件、文件夹权限修改的两种方法,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    Java实现modbus tcp协议数据读写,项目内包含modbus slave仿真软件

    可运行的java项目,分别用两种方案实现modbus协议读写1、jlibmodbus 2、modbus4j 有问题可联系QQ:361440206

    xmlbean轻轻松松读写XML的利器

     Java提供了SAX和DOM两种方式用于解析XML,但即便如此,要读写一个稍微复杂的XML,也不是一件容易的事.    二、XMLBean简介    Hibernate已经成为目前流行的面向Java环境的对象/关系数据库映射工具.    在...

    Java中多种写文件方式的效率对比实验(图)

     近在考虑一个问题:“如果快速地向文件中写入数据”,java提供了多种文件写入的方式,效率上各有异同,基本上可以分为如下三大类:字节流输出、字符流输出、内存文件映射输出。前两种又可以分为带buffer及不带...

    Java考试前总结(包含io输入输出流/线程/特殊for语句/文件读写的总结)

    里面有我刚开始学习Java时,关于io输入输出流的总结及代码,还有线程的两种实现方法的总结及代码展示,文件的读写展示,还有Java中特殊for语句的展示!供初学者学习参考!

    JAVA上百实例源码以及开源项目

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    java源码包---java 源码 大量 实例

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    java读取excel文件的两种方法

    主要为大家详细介绍了java读取excel文件的两种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    JAVA上百实例源码以及开源项目源代码

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    java源码包4

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    java源码包3

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    JAVA_API1.6文档(中文)

    java.util.jar 提供读写 JAR (Java ARchive) 文件格式的类,该格式基于具有可选清单文件的标准 ZIP 文件格式。 java.util.logging 提供 JavaTM 2 平台核心日志工具的类和接口。 java.util.prefs 此包允许应用程序...

    java源码包2

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    java开源包11

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包6

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包9

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包4

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包101

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包5

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

Global site tag (gtag.js) - Google Analytics