用IO流实现文件复制功能
来源:互联网 发布:如何下载安全软件 编辑:程序博客网 时间:2024/05/16 05:29
1、计算机复制文件的原理?
原理:计算机中的文件都是以字节为单位的,当复制文件时,首先读取待复制文件,然后将读取到的信息写入到目的文件中去。
方式:IO流中复制文件提供两种方式,字节流和字符流。
(1)字节流输入输出功能:InputStream(输入,用于读取);和OutputStream(输出,用于写出)。主要用来处理字节或二进制流对象(图片、音频、视频等)。
(2)字符流输入输出功能:Reader(输入,用于读取)和 Writer(输出,用于写出)。主要用来处理单元为2个字节的Unicode字符或字符串,适用于中文文本操作。
读写流量:可以选择每次读写一个字符、一个字符数组、一个字节、一个字节数组四种方式。
注意:计算机中所有文件都是以字节为单位的储存,即使用字符流操作,在磁盘上保留的也不是文件的字符而是先把字符解析成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是将相邻的两个字节组成一个字符来读取的。
字节流是通用的流,可用于任何类型的对象,包括二进制流对象,而字符流只能处理字符或者字符串。
2、用IO流实现文件复制功能。
需求:将项目路径(相对路径)下的FAITH.java文件复制到d盘下,目的文件取名Copy.java。
分析:这是对文本的操作,使用字符流来进行操作。
读取数据:FAITH.java,使用 FileReader 。
写入数据:d:\\Copy.java,使用 FileWriter 。
代码实现:
(1)每次读一个字符:
public class CopyFile {public static void main(String[] args) throws IOException {// 封装数据源FileReader fr = new FileReader("FAITH.java");// 封装目的地FileWriter fw = new FileWriter("d:\\Copy.java");// 读取数据,每次读一个字符 int ch = 0; while ((ch = fr.read()) != -1) { fw.write(ch); }// 释放资源,关闭遵循就近原则,fw最近,先关fwfw.close();fr.close();}}(2)每次读一个字符数组:
public class CopyFile {public static void main(String[] args) throws IOException {// 封装数据源FileReader fr = new FileReader("FileWriterDemo.java");// 封装目的地FileWriter fw = new FileWriter("d:\\Copy.java");//每次读一个字符数组char[] chs = new char[1024]; int len = 0;while ((len = fr.read(chs)) != -1) { // <span style="font-family: Arial;">fr.read(chs))表示每次读一个字符数组</span>//写入数据.fw.write(chs,0,len); // len是读到数据的实际长度}// 释放资源,关闭遵循就近原则,fw最近,先关fwfw.close();fr.close();}}小结:字节流基本流,也是通用流,主要用于处理二进制流数据,但是实际中很多数据是文本形式,所以又提出的字符流概念,在使用中,对文本形式数据主要用字符流进行操作;二进制流数据操作选做字节流操作,如果使用字符流会导致数据丢失。
3 1
- 用IO流实现文件复制功能
- 用IO流实现文件复制功能
- 使用标准io实现文件复制功能
- IO 流实现文件复制
- java IO流实现文件复制
- io流实现文件的复制
- IO流实现文件的复制
- 通过IO流讲一个文件里面的内容读到另外一个文件里面(文件复制功能的实现)
- 使用多线程和IO流编写文件复制功能类
- 【java】IO流 实现简单的复制功能
- IO流文件复制
- IO流文件复制
- IO流复制文件
- IO流---文件复制
- 用java实现文件的复制功能
- 标准io的文件复制功能
- 通过IO文件流操作实现对文件的复制
- java实现文件复制功能
- 数组的基本操作(一)
- Spring MVC防御CSRF、XSS和SQL注入攻击
- 移动App测试实战——专项测试
- Android软键盘遮挡的四种解决方案
- SQL*Loader-522: lfiopn failed for file (xxx.log)
- 用IO流实现文件复制功能
- 内存泄漏从入门到精通三部曲之基础知识篇
- 2015-11-24
- eclipse 插件开发
- coredata 及 Magical Record
- Oracle 12C PSU
- LightOJ 1028 Trailing Zeroes (I)
- Kalman滤波的多种实现方式浅析
- ORA-14037: 分区 "P8" 的分区界限过高