今天搞了下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倍。

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

  1. python对csv文件读写的两种方式 和 读写文件编码问题处理

    ''' 如果文件读取数据出错,可以考虑加一个encoding属性,取值可以是:utf-8,gbk,gb18030 或者加一个属性error,取值为ignore,例如 open(path, encodi ...

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

    使用Virbox Protector对Java项目加密有两种方式,一种是对War包加密,一种是对Jar包加密.Virbox Protector支持这两种文件格式加密,可以加密用于解析class文件的j ...

  3. IOS文件操作的两种方式:NSFileManager操作和流操作

    1.常见的NSFileManager文件方法 -(NSData *)contentsAtPath:path //从一个文件读取数据 -(BOOL)createFileAtPath: path cont ...

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

    http://www.jianshu.com/p/286be61bb9b8 删除github上文件夹的两种方式(解决已经加入ignore的文件夹无法从远程仓库删除的问题) 如果此文件夹已被加入git追 ...

  5. Java新建线程的两种方式

    Java新建线程有两种方式,一种是通过继承Thread类,一种是实现Runnable接口,下面是新建线程的两种方式. 我们假设有个竞赛,有一个选手A做俯卧撑,一个选手B做仰卧起坐.分别为两个线程: p ...

  6. K:java中序列化的两种方式—Serializable或Externalizable

    在java中,对一个对象进行序列化操作,其有如下两种方式: 第一种: 通过实现java.io.Serializable接口,该接口是一个标志接口,其没有任何抽象方法需要进行重写,实现了Serializ ...

  7. Java实现多线程的两种方式

    实现多线程的两种方式: 方式1: 继承Thread类 A: 自定义MyThread类继承Thread类 B: 在MyThread类中重写run() C: 创建MyThread类的对象 D: 启动线程对 ...

  8. [Java] HashMap遍历的两种方式

    Java中HashMap遍历的两种方式原文地址: http://www.javaweb.cc/language/java/032291.shtml第一种: Map map = new HashMap( ...

  9. Java实现深克隆的两种方式

    序列化和依次克隆各个可变的引用类型都可以实现深克隆,但是序列化的效率并不理想 下面是两种实现深克隆的实例,并且测试类对两种方法进行了对比: 1.重写clone方法使用父类中的clone()方法实现深克 ...

随机推荐

  1. typedef std::string AddressLines[4]定义了一个string数组,大小为4

    int main() { typedef std::]; std::]; std::string *pal1 = new AddressLines; delete [] pal; delete [] ...

  2. DHTML【2】--HTML

    通过题目,大家已经明确知道,从这一节开始介绍DHTML中的最基础的部分HTML,对于HTML等概念上一节已经做了概述,这一节不再赘余.在学习HTML之前,先告诉大家一个好消息,HTML不难,比C++. ...

  3. 使vim中Syntastic支持C++11

    安装好Syntastic后发现不支持c++11,会提示错误incompatible with c++98,解决方法如下: .vimrc中加入: let g:syntastic_cpp_compiler ...

  4. mysql安装图解 mysql图文安装教程(详细说明)-[转]

    很多朋友刚开始接触mysql数据库服务器,下面是网友整理的一篇mysql的安装教程,步骤明细也有详细的说明. MySQL5.0版本的安装图解教程是给新手学习的,当前mysql5.0.96是最新的稳定版 ...

  5. IOS 使用新浪微博SDK

    项目需要,测试了一下新浪微博SDK,现在记录一下初步使用过程. 1.下载导入新浪SDK. 2.去新浪开发者平台申请APPkey等. 3.工程中使用 4.在 APPDelegate中写两行 [Weibo ...

  6. FJ省队集训DAY3 T2

    思路:如果一个DAG要的路径上只要一条边去切掉,那么要怎么求?很容易就想到最小割,但是如果直接做最小割会走出重复的部分,那我们就这样:反向边设为inf,这样最小割的时候就不会割到了,判断无解我们直接用 ...

  7. DSP与单片机的区别

    以前刚学习单片机时,经过一订的编程,能实现很多不同的功能,当时就觉得单片机真的是神通广大.后来接触到DSP,发现DSP处理数字在通信上,更加方便.于是我就很好奇的问自己,DSP和单片机,究竟有什么区别 ...

  8. AIR检测网络

    package com.juyou.util.net { import flash.events.StatusEvent; import flash.net.URLRequest; import ai ...

  9. 读书笔记:java特种兵(上)

    ----看着样章,感觉还不错,就买下来了,书先不论好坏,悟到了一个道理,东西没有好与坏,只有适不适合. 第一章:想了解编译器是如何优化程序的,当年的编译原理没有学好啊

  10. (一)一个简单的Web服务器

    万丈高楼平地起,首先我们必须了解 超文本传输协议(HTTP) 以后才能够比较清晰的明白web服务器是怎么回事. 1. 浅析Http协议 HTTP是一种协议,允许web服务器和浏览器通过互联网进行来发送 ...