java - 程序将一个文件的数据复制到另一个文件15次
问题描述
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 JavaCopyFile {
public static void main(String[] args) throws InterruptedException, IOException {
int i=0,count=0;;
while(i<15) {
File source = new File("error.txt");
File dest = new File("criteria.txt");
// copy file conventional way using Stream
//long start = System.nanoTime();
copyFileUsingStream(source, dest);
//System.out.println("Time taken by Stream Copy = " + (System.nanoTime() - start));
if(i<15) {
count++;
}
i++;
}
System.out.println(count);
}
private static void copyFileUsingStream(File source, File dest)
throws IOException {
InputStream input = null;
OutputStream output = null;
try {
input = new FileInputStream(source);
output = new FileOutputStream(dest);
byte[] buf = new byte[1024];
int bytesRead;
while ((bytesRead = input.read(buf)) > 0) {
output.write(buf, 0, bytesRead);
}
}catch(Exception e) {
System.out.println("File not found exception");/*finally {
input.close();
output.close();
*/
}
}
}
我已经编写了上面的代码 - 出于测试目的,我设置了 count 变量。count
给 15 它是完美的。但文件只复制一次。我想将文件复制 15 次到同一个目标文件。请帮我解决这个问题。我是java编程的初学者。
解决方案
正如评论中所建议的,您的逻辑是正确的,但您每次都在重写目标文件。
使用该变量i
来表示您正在写入新目标文件的每个 tiem,如下所示:
File dest = new File("criteria" + i + ".txt");
这将在目标中创建 15 个文件,从而避免重写相同的目标。
编辑 :
根据您的最新评论,将代码更改为如下:
public static void main(String[] args) throws InterruptedException, IOException {
int i = 0, count = 0;
File source = new File("error.txt");
File dest = new File("criteria.txt");
OutputStream output = new FileOutputStream(dest);
while (i < 15) {
copyFileUsingStream(source, output);
if (i < 15) {
count++;
}
i++;
}
System.out.println(count);
}
private static void copyFileUsingStream(File source, OutputStream output)
throws IOException {
InputStream input = null;
try {
input = new FileInputStream(source);
byte[] buf = new byte[1024];
int bytesRead;
while ((bytesRead = input.read(buf)) > 0) {
output.write(buf, 0, bytesRead);
}
} catch (Exception e) {
System.out.println("File not found exception");
}
}
与其OutputStream
在循环的每次迭代中创建它,不如创建它一次并将其传递给copyFileUsingStream
每次,以便保持前一个流。
推荐阅读
- jenkins - Jenkins 使用参数化触发器插件来构建其他项目并确认
- java - 在 Azure devOps 中构建 Java 应用程序时出错
- asp-classic - 如何在经典 ASP 中设置连接字符串?
- php - 无法访问对象 PHP 的私有属性
- c - 为什么我们将 (temp>>11) 与 2 相乘以在此代码中找到第二个
- android - 如何在小部件的列表视图中以编程方式为项目设置背景颜色?
- json - 在 RestClient Low Level Rest API 客户端中翻译匹配特定字段 Elasticsearch Query
- postgresql - 在 postgresql 中调用 curval + 10 的 setval 是否安全?
- spring - 如何使用 @EnableCache 、多个 CacheManagers 和自定义缓存解析器
- flutter - 如何从 StreamBuilder 中访问快照?