java:文件copy

//搞清楚再使用
//禁止商业转载,转载请标明出处
import java.io.File; //引用
import java.io.FileInputStream; //引用
import java.io.FileOutputStream; //引用

public class Calculator {
public static void main(String[] arsg) throws Exception {
File f = new File("I:\\test1.txt"); // 建立对象并设置文件位置
File f1 = new File("I:\\test2.txt"); // 建立对象并设置文件位置

FileInputStream fis = new FileInputStream(f); // 建立输入流对象 传递文件地址(信息流向为从文件到内存)
FileOutputStream fos = new FileOutputStream(f1); // 建立输出流对象 传递文件地址(信息流向为从内存到文件)

byte[] b = new byte[1024]; // 建立字节变量数组,并设置数组大小

int len; // 变量len 赋值 对象fis操作read(参数)

while ((len = fis.read(b)) != -1) // 判断文件剩余内容是否为null,为null返回-1
{
fos.write(b, 0, len); // 向fos对象从0到len以速度b写入内容
}
fis.close(); // 关闭读写
fos.close(); // 关闭读写
}
}
//相关函数
//write(速度,开始位置,结束位置)
//read(X),简单理解为每次读取大小为X的内容,且检测下一行是否为空。
 //从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。以整数形式返回实际读取的字节数。在输入数据可用、检测到文件末尾或者抛出异常前,此方法一直阻塞。
//如果 b 的长度为 0,则不读取任何字节并返回 0;否则,尝试读取至少一个字节。如果因为流位于文件末尾而没有可用的字节,则返回值 -1;否则,至少读取一个字节并将其存储在 b 中。

//将读取的第一个字节存储在元素 b[0] 中,下一个存储在 b[1] 中,依次类推。读取的字节数最多等于 b的长度。设 k 为实际读取的字节数;这些字节将存储在 b[0] 到 b[k-1] 的元素中,不影响 b[k] 到b[b.length-1] 的元素。


### Java 文件复制示例 在 Java 中,可以通过多种方式实现 `File` 对象之间的文件复制操作。以下是基于标准库的功能实现方法之一: #### 使用 `Files.copy()` 方法 自 Java 7 起引入的 `java.nio.file.Files` 类提供了便捷的方法来执行文件复制操作。这种方法简单高效。 ```java import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.StandardCopyOption; public class FileCopyExample { public static void main(String[] args) { File source = new File("source.txt"); File target = new File("target.txt"); try { Files.copy(source.toPath(), target.toPath(), StandardCopyOption.REPLACE_EXISTING); System.out.println("File copied successfully."); } catch (IOException e) { System.err.println("Error occurred while copying file: " + e.getMessage()); } } } ``` 上述代码通过调用 `Files.copy()` 将源文件的内容复制到目标文件中,并指定选项 `StandardCopyOption.REPLACE_EXISTING` 来覆盖已存在的目标文件[^1]。 #### 使用输入/输出流手动复制 如果需要更灵活的方式,则可以使用传统的 I/O 流机制完成文件复制任务。 ```java import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class StreamFileCopyExample { public static void main(String[] args) { FileInputStream inputStream = null; FileOutputStream outputStream = null; try { File source = new File("source.txt"); File target = new File("target.txt"); inputStream = new FileInputStream(source); outputStream = new FileOutputStream(target); byte[] buffer = new byte[8 * 1024]; // 8 KB buffer size int bytesRead; while ((bytesRead = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, bytesRead); } System.out.println("File copied using streams successfully."); } catch (IOException ex) { System.err.println("I/O error during file copy: " + ex.getMessage()); } finally { try { if (inputStream != null) inputStream.close(); if (outputStream != null) outputStream.close(); } catch (IOException ex) { System.err.println("Failed to close stream: " + ex.getMessage()); } } } } ``` 此代码片段展示了如何利用字节缓冲区逐步读取并写入数据至目标文件,从而完成文件复制过程[^4]。 --- ### 性能测试的重要性 对于涉及大量文件处理的应用程序来说,性能是一个重要考量因素。因此,在开发完成后应考虑对其进行非功能性测试以评估其表现特性[^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值