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倍。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值