编写Java程序,使用 Java 的 I/O 流将 H:\eclipse.zip 文件拷贝至 E 盘下,重新命名为 eclipse 安装 .zip。

简介: 编写Java程序,使用 Java 的 I/O 流将 H:\eclipse.zip 文件拷贝至 E 盘下,重新命名为 eclipse 安装 .zip。

需求说明:


使用 Java 的 I/O 流将 H:\eclipse.zip 文件拷贝至 E 盘下,重新命名为 eclipse 安装 .zip。在拷贝过程中,每隔2000 毫秒显示一次文件已经被拷贝的大小及剩余的大小,直至文件完成拷贝,提示用户文件已经拷贝完成


17.png


实现思路:


创建 InstantThread 类,该类需要继承 Thread 类

在 InstantThread 类中创建两个 File 类型的静态实例 readFile(被拷贝的文件)和 writeFile(拷贝后的文件)

在 InstantThread 类中定义 void copy(File readFile,File writeFile) 方法,完成文件的拷贝操作,参数readFile 表示要读取的文件,参数 writeFile 表示重新写入的新文件

重写 InstantThread 类的 run() 方法,该方法用于显示文件拷贝的进度。 在 run() 方法中调用 readFile 的 length() 方法以获取源文件的大小,并保存到 long 类型的变量 length 内

当变量 currentLength 的值大于等于 length 变量值时,结束循环


实现代码:


import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class InstantThread extends Thread{
  final static File readFile = new File("D:\\1.rar");
  final static File writeFile = new File("E:\\1.rar");
  @Override
  public void run() {
    //被拷贝文件的大小
    long length = readFile.length();
    System.out.println("被拷贝的文件大小:"+length+"B");
    while (true) {
      try {
        sleep(2000);
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
      long currentLength = writeFile.length();
      System.out.println("已拷贝:"+currentLength+"B");
      System.out.println("剩余:"+(length - currentLength)+"B");
      if (currentLength>=length) {
        System.out.println("文件已经完成拷贝");
        break;
      }
    }
  }
  public void copy(File in,File ot) throws IOException {
    FileInputStream input = new FileInputStream(in);
    FileOutputStream ouput = new FileOutputStream(ot);
    int data = 0;
    while ((data = input.read())!=-1) {
      ouput.write(data);
    }
    input.close();
    ouput.close();
  }
  public static void main(String[] args) {
    InstantThread i = new InstantThread();
    i.start();
    try {
      i.copy(readFile, writeFile);
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}
相关文章
|
1月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
69 9
|
1月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
71 2
|
12天前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
75 34
|
29天前
|
消息中间件 存储 Java
RocketMQ文件刷盘机制深度解析与Java模拟实现
【11月更文挑战第22天】在现代分布式系统中,消息队列(Message Queue, MQ)作为一种重要的中间件,扮演着连接不同服务、实现异步通信和消息解耦的关键角色。Apache RocketMQ作为一款高性能的分布式消息中间件,广泛应用于实时数据流处理、日志流处理等场景。为了保证消息的可靠性,RocketMQ引入了一种称为“刷盘”的机制,将消息从内存写入到磁盘中,确保消息持久化。本文将从底层原理、业务场景、概念、功能点等方面深入解析RocketMQ的文件刷盘机制,并使用Java模拟实现类似的功能。
40 3
|
1月前
|
Java 测试技术 Maven
Maven clean 提示文件 java.io.IOException
在使用Maven进行项目打包时,遇到了`Failed to delete`错误,尝试手动删除目标文件也失败,提示`java.io.IOException`。经过分析,发现问题是由于`sys-info.log`文件被其他进程占用。解决方法是关闭IDEA和相关Java进程,清理隐藏的Java进程后重新尝试Maven clean操作。最终问题得以解决。总结:遇到此类问题时,可以通过任务管理器清理相关进程或重启电脑来解决。
|
1月前
|
Java Android开发
Eclipse 运行程序
Eclipse 运行程序
28 2
|
1月前
|
XML Android开发 数据格式
Eclipse 创建 XML 文件
Eclipse 创建 XML 文件
27 2
|
1月前
|
IDE Java 编译器
开发 Java 程序一定要安装 JDK 吗
开发Java程序通常需要安装JDK(Java Development Kit),因为它包含了编译、运行和调试Java程序所需的各种工具和环境。不过,某些集成开发环境(IDE)可能内置了JDK,或可使用在线Java编辑器,无需单独安装。
65 1
|
1月前
|
存储 缓存 安全
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见。本文介绍了使用 `File.createTempFile` 方法和自定义创建临时文件的两种方式,详细探讨了它们的使用场景和注意事项,包括数据缓存、文件上传下载和日志记录等。强调了清理临时文件、确保文件名唯一性和合理设置文件权限的重要性。
71 2
|
1月前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
52 4
下一篇
DataWorks