使用打印流复制文件

使用打印流复制文件

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.PrintWriter;

 

/*

 * 需求:DataStreamDemo.java复制到Copy.java中

 * 数据源:

 *             DataStreamDemo.java -- 读取数据 --FileReader -- BufferedReader

 * 目的地:

 *             Copy.java -- 写出数据 --FileWriter -- BufferedWriter -- PrintWriter

 */

public class CopyFileDemo {

         publicstatic void main(String[] args) throws IOException {

                   //以前的版本

                   //封装数据源

                   //BufferedReader br = new BufferedReader(new FileReader(

                   //"DataStreamDemo.java"));

                   //// 封装目的地

                   //BufferedWriter bw = new BufferedWriter(new FileWriter("Copy.java"));

                   //

                   //String line = null;

                   //while ((line = br.readLine()) != null) {

                   //bw.write(line);

                   //bw.newLine();

                   //bw.flush();

                   //}

                   //

                   //bw.close();

                   //br.close();

 

                   //打印流的改进版

                   //封装数据源

                   BufferedReaderbr = new BufferedReader(new FileReader(

                                     "DataStreamDemo.java"));

                   //封装目的地

                   PrintWriterpw = new PrintWriter(new FileWriter("Copy.java"), true);

                  

                   Stringline = null;

                   while((line=br.readLine())!=null){

                            pw.println(line);

                   }

                  

                   pw.close();

                   br.close();

         }

}

在不同的编程语言中,使用文件流实现文件复制有不同的方式。 ### C# 实现文件复制 在 C# 里,可以使用 `FileStream` 类来创建读取流和写入流,进而实现文件复制。以下是一个示例代码: ```csharp using System; using System.IO; namespace 使用文件流来实现多媒体的复制 { internal class Program { static void Main(string[] args) { // 原文件路径 string Yuan = @"C:\Users\Administrator\Desktop\IO操作\原路径\多媒体.txt"; // 目标文件路径 string Xian = @"C:\Users\Administrator\Desktop\IO操作\现路径\新多媒体.txt"; CopyFile(Yuan, Xian); Console.WriteLine("复制成功"); Console.ReadKey(); } public static void CopyFile(string Yuan, string Xian) { using (FileStream fsR = new FileStream(Yuan, FileMode.Open, FileAccess.Read)) { using (FileStream fsW = new FileStream(Xian, FileMode.OpenOrCreate, FileAccess.Write)) { byte[] buffer = new byte[1024 * 1024 * 5]; // 因为文件可能比较大,一次读不完,需要循环读取 while (true) { // 返回本次实际读取的字符数 int r = fsR.Read(buffer, 0, buffer.Length); // 如果返回值是 0 的话,就代表读完了 if (r == 0) { break; } fsW.Write(buffer, 0, r); } } } } } } ``` 此代码先定义原文件和目标文件的路径,接着在 `CopyFile` 方法中,创建读取流 `fsR` 来读取原文件,创建写入流 `fsW` 来写入目标文件。借助 `while` 循环不断读取原文件内容到缓冲区 `buffer`,再将读取的内容写入目标文件,直至文件读取完毕 [^3]。 ### C# 另一个简单示例 下面是一个更简洁的 C# 示例,用于复制图片文件: ```csharp // 使用 FileStream 复制图片,需要一个读取流,一个写入流 FileStream readStream = new FileStream("IMG_0004.PNG", FileMode.Open); // 读取流,文件模式使用 Open FileStream writeStream = new FileStream("IMG副本.PNG", FileMode.Create); // 写入流,文件模式使用 Create ``` 这个示例创建了一个读取流 `readStream` 用于打开要复制的图片文件,创建了一个写入流 `writeStream` 用于创建副本文件 [^1]。 ### Java 实现文件复制 在 Java 中,可以使用 `FileInputStream` 和 `FileOutputStream` 来实现文件复制,还能通过递归实现文件复制。以下是关于 Java IO 流节点流实现文件复制的相关说明: - `FileInputStream` 和 `FileOutputStream` 可用于复制图片、视频等文件。 - `FileReader` 和 `FileWriter` 主要用于文本文件复制 [^2]。 ### Java 递归复制文件夹示例 Java 还能使用字节型文件流完成文件夹的递归复制,示例打印日志如下: ```plaintext dirc>文件复制成功 aaa>文件复制成功 innera>文件复制成功 innera.txt>文件复制成功! innerinnera>文件复制成功 innerinnera.txt>文件复制成功! inneraa>文件复制成功 inneraa.txt>文件复制成功! inneraaa>文件复制成功 bbb>文件复制成功 b>文件复制成功 1.txt>文件复制成功! 2.txt>文件复制成功! bb>文件复制成功 11.txt>文件复制成功! 22.txt>文件复制成功! bbb>文件复制成功 ccc>文件复制成功 cc.txt>文件复制成功! innerc>文件复制成功 c.txt>文件复制成功! cc.txt>文件复制成功! ccc.txt>文件复制成功! ``` 这展示了 Java 递归复制文件夹及其中文件的结果 [^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值