编写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();
    }
  }
}
相关文章
|
5天前
|
缓存 监控 安全
如何提高 Java 高并发程序的性能?
以下是提升Java高并发程序性能的方法:优化线程池设置,减少锁竞争,使用读写锁和无锁数据结构。利用缓存减少重复计算和数据库查询,并优化数据库操作,采用连接池和分库分表策略。应用异步处理,选择合适的数据结构如`ConcurrentHashMap`。复用对象和资源,使用工具监控性能并定期审查代码,遵循良好编程规范。
|
17天前
|
Java 编译器 开发者
Java中的异常处理是确保程序稳定性的关键
Java中的异常处理是确保程序稳定性的关键。本文探讨八大最佳实践:理解异常体系,选用恰当异常类型,提供详细错误信息,精用try-catch,善用finally块,利用try-with-resources简化资源管理,记录异常便于追踪,及避免finally中抛异常。遵循这些原则,提升代码质量和错误管理能力。
12 1
|
2天前
|
关系型数据库 Java MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【9月更文挑战第6天】在Linux环境下安装JDK 1.8、Tomcat和MariaDB是搭建Java Web应用的关键步骤。本文详细介绍了使用apt-get安装OpenJDK 1.8、下载并配置Tomcat,以及安装和安全设置MariaDB(MySQL的开源分支)的方法。通过这些步骤,您可以快速构建一个稳定、高效的开发和部署环境,并验证各组件是否正确安装和运行。这为您的Java Web应用提供了一个坚实的基础。
9 0
|
14天前
|
数据采集 人工智能 监控
【Azure 应用程序见解】Application Insights Java Agent 3.1.0的使用实验,通过修改单个URL的采样率来减少请求及依赖项的数据采集
【Azure 应用程序见解】Application Insights Java Agent 3.1.0的使用实验,通过修改单个URL的采样率来减少请求及依赖项的数据采集
|
15天前
|
Java jenkins Shell
还有人不会启动JAVA程序
还有人不会启动JAVA程序
11 0
|
16天前
|
Java 调度
|
16天前
|
监控 Java API
如何从 Java 程序中查找内存使用情况
【8月更文挑战第22天】
13 0
|
16天前
|
Java
|
Java 开发工具 Android开发
JAVA开发工具eclipse中@author怎么改
1:JAVA开发工具eclipse中@author怎么改,开发的时候为了注明版权信息。 用eclipse开发工具默认的是系统用户,那么怎么修改呢 示例如图所示 首先打开Eclipse--->然后在上面的标题栏找到window--->然后找到preferences 如图 找到preferences->java->code style->code template如下图       然后在写程序界面再写文档注释时,开发者已经发生改变了。
955 0
|
4天前
|
监控 Java 调度
【Java学习】多线程&JUC万字超详解
本文详细介绍了多线程的概念和三种实现方式,还有一些常见的成员方法,CPU的调动方式,多线程的生命周期,还有线程安全问题,锁和死锁的概念,以及等待唤醒机制,阻塞队列,多线程的六种状态,线程池等
26 6
【Java学习】多线程&JUC万字超详解