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倍。
java文件读写的两种方式的更多相关文章
- python对csv文件读写的两种方式 和 读写文件编码问题处理
''' 如果文件读取数据出错,可以考虑加一个encoding属性,取值可以是:utf-8,gbk,gb18030 或者加一个属性error,取值为ignore,例如 open(path, encodi ...
- 对Java代码加密的两种方式,防止反编译
使用Virbox Protector对Java项目加密有两种方式,一种是对War包加密,一种是对Jar包加密.Virbox Protector支持这两种文件格式加密,可以加密用于解析class文件的j ...
- IOS文件操作的两种方式:NSFileManager操作和流操作
1.常见的NSFileManager文件方法 -(NSData *)contentsAtPath:path //从一个文件读取数据 -(BOOL)createFileAtPath: path cont ...
- 转载:删除github上文件夹的两种方式
http://www.jianshu.com/p/286be61bb9b8 删除github上文件夹的两种方式(解决已经加入ignore的文件夹无法从远程仓库删除的问题) 如果此文件夹已被加入git追 ...
- Java新建线程的两种方式
Java新建线程有两种方式,一种是通过继承Thread类,一种是实现Runnable接口,下面是新建线程的两种方式. 我们假设有个竞赛,有一个选手A做俯卧撑,一个选手B做仰卧起坐.分别为两个线程: p ...
- K:java中序列化的两种方式—Serializable或Externalizable
在java中,对一个对象进行序列化操作,其有如下两种方式: 第一种: 通过实现java.io.Serializable接口,该接口是一个标志接口,其没有任何抽象方法需要进行重写,实现了Serializ ...
- Java实现多线程的两种方式
实现多线程的两种方式: 方式1: 继承Thread类 A: 自定义MyThread类继承Thread类 B: 在MyThread类中重写run() C: 创建MyThread类的对象 D: 启动线程对 ...
- [Java] HashMap遍历的两种方式
Java中HashMap遍历的两种方式原文地址: http://www.javaweb.cc/language/java/032291.shtml第一种: Map map = new HashMap( ...
- Java实现深克隆的两种方式
序列化和依次克隆各个可变的引用类型都可以实现深克隆,但是序列化的效率并不理想 下面是两种实现深克隆的实例,并且测试类对两种方法进行了对比: 1.重写clone方法使用父类中的clone()方法实现深克 ...
随机推荐
- linux 虚机增加硬盘大小 转自
转自http://blog.csdn.net/tongyu2009/article/details/8525384 当我做到#unzip liunx_oracle时候,提示disk full? [ ...
- RAC的负载均衡有2种方式
RAC的负载均衡有2种方式1:数据库服务器端 设置remote_listener2: 客户端tns配置 一般连接串这么写:ess_hb_i1= (DESCRIPTION = (ADDRESS ...
- 刚安装的ios app 会带有教你功能使用的特效说明 做法
这个功能使用说明是每次app更新或者第一次安装都需要显示的.你可以给每个需要显示的说明界面设置一个BOOL变量控制它是否显示.在applicationDidFinishLaunching的函数中判断a ...
- C#中的TCP通讯与UDP通讯
最近做了一个项目,主要是给Unity3D和实时数据库做通讯接口.虽然方案一直在变:从开始的UDP通讯变为TCP通讯,然后再变化为UDP通讯;然后通讯的对象又发生改变,由与数据库的驱动进行通讯(主动推送 ...
- 使用angularjs中ng-repeat的$even与$odd属性时的注意事项
JavaScript中数组的索引是从0开始的,因此我们再取奇偶的时候需要用!$even和!$odd来将$even和$odd的布尔值反转 下面给出一个实例: 使用$odd和$even来制作一个红蓝相间的 ...
- Linux下MySQL的彻底卸载和安装配置字符集
前言: Linux环境下MySQL的安装和配置在网上已经有很多教程了.之所以写这篇文章是因为在配置字符集的时候找了网上的一些教程发现并不能用导致折腾了一阵子.下面的教程均是亲自实践. MySQL的彻底 ...
- 利用css进行网页布局
网页布局: 又称版式布局,是网页UI设计师将有限的视觉元素进行有机的排列组合,将理性的思维个性的化的表现出来,是一种具有个人艺术特色的视觉传达方式.传达信息的同时有美感.网页设计特点(相对纸媒来说). ...
- LINUX服务器配置NFS服务,挂载外部存储实现目录共享
安装nfs rpcbind 一.服务端配置 安装 NFS 服务器所需的软件包:nfs 和 rpcbind # yum install nfs-utils # yum install rpcbind( ...
- 什么叫CallBack函数,怎么用回调函数?
JQuery众多常用方法中很经常会用到回调函数, 理解好js callback函数定义及用法,我们就可以利用callback函数帮我们做很多事情啦! A callback is a function ...
- Python新手学习基础之函数-return语句与函数调用
return语句 return语句的写法是: return 表达式 return语句用于退出函数,选择性地向调用方返回一个表达式.return在不带参数的情况下,默认返回None. None是一个特殊 ...