java IO流(二)文件的复制
来源:互联网 发布:淘宝男士银项链 编辑:程序博客网 时间:2024/05/21 22:56
在上篇我们提到了文本文件的读写,既然能够读写。那么我们这篇说下文件的复制,有以下方法:
利用FileWriter和FileReader复制文本文件:
- 方式一
import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.Reader;import java.io.Writer;public class WriterAndReaderTest { public static void main(String[] args) throws IOException { //被复制的文件路径 String txt = "G:" + File.separator + "Test.txt"; //复制文件的路径 String copy = "G:" +File.separator + "Test1.txt"; //读取 Reader reader = new FileReader(txt); //写入 Writer writer = new FileWriter(copy); //若不用外部变量接收会丢失数据 int temp = 0; while((temp = reader.read()) != -1){ writer.write(temp); } //关闭流 reader.close(); writer.close(); }}
- 方式二
import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.Reader;import java.io.Writer;public class WriterAndReaderTest1 { public static void main(String[] args) throws IOException { // 被复制的文件路径 String txt = "G:" + File.separator + "Test.txt"; // 复制文件的路径 String copy = "G:" + File.separator + "Test1.txt"; //读取 Reader reader = new FileReader(txt); //写入 Writer writer = new FileWriter(copy); //使用字符数组接收 char[] c = new char[1024]; while( reader.read(c) != -1){ writer.write(c); } //关闭流 reader.close(); writer.close(); }}
- 方式三(利用字符流缓冲区复制文本文件<提高效率>)
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.Reader;import java.io.Writer;public class WriterAndReaderTest2 { public static void main(String[] args) throws IOException { // 被复制的文件路径 String txt = "G:" + File.separator + "Demo.txt"; // 复制文件的路径 String copy = "G:" + File.separator + "Demo1.txt"; // 读取 Reader reader = new FileReader(txt); // 写入 Writer writer = new FileWriter(copy); //创建缓冲区对象 BufferedReader br = new BufferedReader(reader); BufferedWriter bw = new BufferedWriter(writer); //读取行,直到返回null String line = null; while ((line = br.readLine()) != null) { bw.write(line); } ////关闭缓冲区就是关闭缓冲区中的流对象 bw.close(); br.close(); }}
虽然字符流可以复制文本文件,但比如图片之类的复制就会导致文件无法打开或者损坏,那我们就需要用到字节流来读写。可以使用以下方法:
利用FileInputStream和FileOutputStream复制图片:
- 方式一
import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;public class InputOutputStreamTest { public static void main(String[] args) throws IOException { //被复制图片的路径 String png = "G:" + File.separator + "01.png"; //复制图片的路径 String copy = "G:" + File.separator + "02.png"; //读取 InputStream in = new FileInputStream(png); //写入 OutputStream os = new FileOutputStream(copy); int temp = 0; while((temp = in.read()) != -1){ os.write(temp); } //关闭流 os.close(); in.close(); }}
- 方式二(利用字节流缓冲区复制图片<提高效率>)
import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;public class InputOutputStreamTest1 { public static void main(String[] args) throws IOException { //被复制图片的路径 String png = "G:" + File.separator + "01.png"; //复制图片的路径 String copy = "G:" + File.separator + "02.png"; //读取 InputStream in = new FileInputStream(png); //写入 OutputStream os = new FileOutputStream(copy); //创建缓冲区 BufferedInputStream bis = new BufferedInputStream(in); BufferedOutputStream bos = new BufferedOutputStream(os); byte[] buf = new byte[1024]; int temp = 0; while((temp = bis.read(buf)) != -1){ bos.write(buf, 0 ,temp); } //关闭缓冲区 bos.close(); bis.close(); }}
总结
看了上面的实例相信大家应该明白了,到底该什么时候用字符流和字节流了 1:字节流读取二进制文件(如图片、mp3) 2:字符流用来操作字符文件较多的文本用缓冲区能够在读写大文件的时候有效提高效率
阅读全文
0 0
- java IO流(二)文件的复制
- JAVA学习第四十八课 — IO流(二):文件的复制 & 缓冲区1
- Java的IO流复制文件
- JAVA基础,IO流。(文件复制的实现)
- Java基础知识之文件操作(二)——IO流复制文件
- 《java----IO流---文件复制》
- IO流(文件复制的方法)
- java的IO流复制文件和读取文件内容
- java IO流 读取文件 && 文件复制
- java IO-文件流-文件内容复制
- IO---Java 文件复制
- java中IO流的文件简单的复制
- Java io初探(1),使用java流复制文件
- java.io流实现文件复制的方法
- java中通过IO流实现文件的复制
- JAVA IO使用高速缓冲区的字节流复制文件
- java中的IO流实现文件的复制下载
- JAVA 的IO操作(五)简单文件复制
- history.back(-1)和history.go(-1)的区别
- 解决Fragment切换过快程序崩溃
- sqlserver中判断表或临时表是否存在
- hdu4547
- Windows7下MATLAB的安装
- java IO流(二)文件的复制
- 如何给wordpress的页面添加上html的后缀
- C# 将正方形头像转化成圆形头像(例如:qq头像)
- New Views Don’t Show Up When Using Eclipse RCP setSaveAndRestore
- 判断两个矩形是否相交算法
- 【转载】让自己成为太阳
- Android性能优化
- 即将奋战在各个面试岗位的我
- 陷波器设计