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

时间: 2024-11-03 22:32:10

java文件读写的两种方式的相关文章

java.util.Arrays.sort两种方式的排序(及文件读写练习)

import java.io.*; import java.util.*; public class SortTest{ public static void main(String args[]) throws IOException, ClassNotFoundException { FileReader InWord = new FileReader(new File("words.txt")); BufferedReader in = new BufferedReader(In

.net学习笔记--文件读写的几种方式

在.net中有很多有用的类库来读写硬盘上的文件 一般比较常用的有: File:1.什么时候使用:当读写件大小不大,同时可以一次性进行读写操作的时候使用         2.不同的方式可以读写文件类型不一样. ReadAllBytes()  WriteAllByte():可以读写任意类型的文件 (里面封装的是FileStream)           ReadAllLines()  ReadAllText():(里面封装是StreamWriter,StreamReader),只能读写文本类型文件

对Java代码加密的两种方式,防止反编译

使用Virbox Protector对Java项目加密有两种方式,一种是对War包加密,一种是对Jar包加密.Virbox Protector支持这两种文件格式加密,可以加密用于解析class文件的java.exe,并且可以实现项目源码绑定制定设备,防止部署到客户服务器的项目被整体拷贝. 两种加密方式 War 包加密 当你的项目在没有完成竣工的时候,不适合使用 war 文件,因为你的类会由于调试之类的经常改,这样来回删除.创建 war 文件很不爽,最好是你的项目已经完成了,不改了,那么就打个 w

转载:删除github上文件夹的两种方式

http://www.jianshu.com/p/286be61bb9b8 删除github上文件夹的两种方式(解决已经加入ignore的文件夹无法从远程仓库删除的问题) 如果此文件夹已被加入git追踪,那么删除方法很简单,只需要将此文件夹删掉,然后提交一下就可以了如果次文件夹曾经被加入过git追踪,现在被加入.gitignore里了,但是github上还有此文件夹.对于这种情况,稍微有点复杂,因为已经加入.gitignore的文件或文件夹,无法对其进行提交了,哪怕是将其删除,都无法提交.我们用

Java开启线程的两种方式

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.ios培训..Net培训</a>.期待与您交流!------ Java开启线程的两种方式: 方式一:成为线程(Thread)的儿子,即继承Thread类简单代码如下:class Student extends Thread{Student(String name){super(name);}public

java 实现多线程的两种方式

一.问题引入 说到这两个方法就不得不说多线程,说到多线程就不得不提实现多线程的两种方式继承Thread类和实现Runable接口,下面先看这两种方式的区别. 二. Java中实现多线程的两种方式 1.  继承Thread类 /** * 使用Thread类模拟4个售票窗口共同卖100张火车票的程序,实际上是各卖100张 */ public class ThreadTest { public static void main(String[] args){ new MyThread().start(

第六篇、文件处理之文件修改的两种方式

目录 第六篇.文件处理之文件修改的两种方式 说明 方式一 方式二 总结 第六篇.文件处理之文件修改的两种方式 说明 文件的数据是存放在硬盘上的,所以只能覆盖,不能直接修改,平时看到的修改文件都是障眼法的效果,具体的两种实现方式 方式一 将硬盘里的文件全部加载到内存里,内存是可以直接修改的,修改完了后,再由内存覆盖到硬盘里 import os with open('37r.txt') as fr, open('37r_swap.txt', 'w') as fw: data = fr.read()

文件修改的两种方式

文件修改的两种方式 文件的数据是存放于硬盘上的,因而只存在覆盖.不存在修改这么一说,我们平时看到的修改文件,都是模拟出来的效果,具体的说有两种实现方式. 一.方式一 将硬盘存放的该文件的内容全部加载到内存,在内存中是可以修改的,修改完毕后,再由内存覆盖到硬盘(word,vim,nodpad++等编辑器). import os with open('info.txt', 'r', encoding='utf-8') as fr, open('info_test.txt', 'w', encodin

简述java中抛出异常的两种方式

java编程中经常遇到异常,这时就需要利用java中的异常抛出机制,在java中提供了两种抛出异常的方法:try{}  catch() {}和throw. 一.抛出异常的两种方式 (1) 首先我们来看一下try()  catch(){}这种方式: ? 1 2 3 4 5 6 try{    i=9\0; } catch(exception e) {     system.out.println("除数不能为0"): } 该种方式是将待执行的代码放入try中,如果执行的代码发生异常就会被