java中复制文本文件的方式我总结为14种(按字符读取4中,按字节读取8种!??)
2015-07-26 15:36
585 查看
java中复制文件的方式
如果按照字符来读取的话,可以有4种,基本的2种,高效的2种,高效特殊的1种
第0种:
第一种:加入缓冲区Buffered一次读取一个字符数组
第二种:加入缓冲区Buffered一次读取一个字符
第三种:普通的一次读取一个字符数组
第三种:普通的一次读取一个字符
如果按照字节来读取的话,可以有8中
第一种:把字节流转换为字符流来一次读取一个字符
第二种:把字节流转换为字符流来一次读取一个字符数组
第四种:高效字节流一次读取一个字符:
第五种:普通的字节流对象一次读取一个字节数组
第六种:普通的字节流对象一次读取一个字节
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("b,txt")));然后一次读取一个字符
第八种:BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("a.txt")));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("b,txt")));然后一次读取一个字符数组
注意复制图片、视频、音频的话,只有4种方式(字节流读取方式),不能用字符流读取
如果按照字符来读取的话,可以有4种,基本的2种,高效的2种,高效特殊的1种
第0种:
public class CopyFileDemo { public static void main(String[] args) throws Exception{ //封裝数据源 BufferedReader reader = new BufferedReader(new FileReader("a.txt")); //封装目的地 BufferedWriter writer = new BufferedWriter(new FileWriter("b.txt")); //读写数据 String line = null; while((line=reader.readLine())!=null){ writer.write(line); writer.newLine();//添加新行,不然写到文件里面的内容就没有换行 writer.flush(); } //释放资源 writer.close(); writer.close(); } }
第一种:加入缓冲区Buffered一次读取一个字符数组
public class CopyFileTest { public static void main(String[] args) throws Exception{ //封装数据源 BufferedReader reader = new BufferedReader(new FileReader("a.txt")); //封装目的地 BufferedWriter writer = new BufferedWriter(new FileWriter("b.txt")); //两种方式其中一种一次读取一个字符数组 char[] chs = new char[1024]; int len=0; while((len=reader.read(chs))!=-1){ writer.write(chs,0,len); writer.flush();//记得刷新 } //释放资源 writer.close(); reader.close(); } }
第二种:加入缓冲区Buffered一次读取一个字符
public class CopyFileTest { public static void main(String[] args) throws Exception{ //封装数据源 BufferedReader reader = new BufferedReader(new FileReader("a.txt")); //封装目的地 BufferedWriter writer = new BufferedWriter(new FileWriter("b.txt")); //一次读取一个字符 int ch=0; while((ch=reader.read())!=-1){ writer.write(ch); } //释放资源 writer.close(); reader.close(); } }
第三种:普通的一次读取一个字符数组
public class BufferedCopyFileTest { public static void main(String[] args) throws Exception{ //封装数据源 FileReader reader = new FileReader("a.txt"); //封装目的地 FileWriter writer = new FileWriter("b.txt"); //一次读取一个字符数组 char[] chs = new char[1024]; int len=0; while((len=reader.read(chs))!=-1){ writer.write(chs,0,len); writer.flush(); } writer.close(); reader.close(); } }
第三种:普通的一次读取一个字符
public class BufferedCopyFileTest { public static void main(String[] args) throws Exception{ //封装数据源 FileReader reader = new FileReader("a.txt"); //封装目的地 FileWriter writer = new FileWriter("b.txt"); //一次读取一个字符 int ch=0; while((ch=reader.read())!=-1){ writer.write(ch); } writer.close(); reader.close(); } }
如果按照字节来读取的话,可以有8中
第一种:把字节流转换为字符流来一次读取一个字符
public class Copy { public static void main(String[] args) throws Exception { //封装数据源(把字节流转换为字符流) InputStreamReader isr = new InputStreamReader(new FileInputStream("a.txt")); //封装目的地(把字节流转换为字符流) OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("b.txt")); //一次读取一个字符 int ch=0; while((ch=isr.read())!=-1){ osw.write(ch); } //关闭资源 osw.close(); isr.close(); } }
第二种:把字节流转换为字符流来一次读取一个字符数组
public class Copy { public static void main(String[] args) throws Exception { //封装数据源(把字节流转换为字符流) InputStreamReader isr = new InputStreamReader(new FileInputStream("a.txt")); //封装目的地(把字节流转换为字符流) OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("b.txt")); //一次读取一个字符数组 char[] chs = new char[1024]; int len=0; while((len=isr.read(chs))!=-1){ osw.write(chs,0,len); osw.flush(); } //关闭资源 osw.close(); isr.close(); } }第三种:高效字节流一次读写一个字节数组:
public static void method4(String srcString, String destString) throws IOException { BufferedInputStream bis = new BufferedInputStream(new FileInputStream( srcString)); BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream(destString)); byte[] bys = new byte[1024]; int len = 0; while ((len = bis.read(bys)) != -1) { bos.write(bys, 0, len); } bos.close(); bis.close(); }
第四种:高效字节流一次读取一个字符:
public static void method3(String srcString, String destString) throws IOException { BufferedInputStream bis = new BufferedInputStream(new FileInputStream( srcString)); BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream(destString)); int by = 0; while ((by = bis.read()) != -1) { bos.write(by); } bos.close(); bis.close(); }
第五种:普通的字节流对象一次读取一个字节数组
public static void method2(String srcString, String destString) throws IOException { FileInputStream fis = new FileInputStream(srcString); FileOutputStream fos = new FileOutputStream(destString); byte[] bys = new byte[1024]; int len = 0; while ((len = fis.read(bys)) != -1) { fos.write(bys, 0, len); } fos.close(); fis.close(); }
第六种:普通的字节流对象一次读取一个字节
public static void method1(String srcString, String destString) throws IOException { FileInputStream fis = new FileInputStream(srcString); FileOutputStream fos = new FileOutputStream(destString); int by = 0; while ((by = fis.read()) != -1) { fos.write(by); } fos.close(); fis.close(); }第七种:BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("a.txt")));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("b,txt")));然后一次读取一个字符
第八种:BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("a.txt")));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("b,txt")));然后一次读取一个字符数组
注意复制图片、视频、音频的话,只有4种方式(字节流读取方式),不能用字符流读取
相关文章推荐
- java中的同步与异步
- Java基础查漏补缺:(开篇)为什么要在即将找工作的时候还在看Java基础
- spring bean 生命周期
- Learn Gradle - CH 3 Java 快速入门
- 关于Java集合的总结
- 用枚举方法编写的星期几 并输出相应文字(Java)
- Java对象的equals方法分析与重写
- JAVA深入研究——Method的Invoke方法
- SPRING技术内幕-笔记(十二)spring驱动ibatis的设计与实现
- JavaWeb学习笔记:Servlet
- java Ip地址的获取 简单代码
- 冒泡,简单选择,直接插入排序比较(Java版)
- springmvc的restful服务理解
- 常见排序算法(java实现)
- JAVA集中中 List Set Map 区别和关系
- eclipse编辑器下显示文件路径
- 开源 自由 java CMS - FreeCMS1.8 网上申报
- Java Base64、AES、SHA1、MD5加密算法
- JAVA注解
- [转]STRUTS2中的OGNL