编写Java程序,使用 Java 的 I/O 流将 H:\eclipse.zip 文件拷贝至 E 盘下,重新命名为 eclipse 安装 .zip。
查看本章节
查看作业目录
需求说明:
使用 Java 的 I/O 流将 H:\eclipse.zip 文件拷贝至 E 盘下,重新命名为 eclipse 安装 .zip。在拷贝过程中,每隔2000 毫秒显示一次文件已经被拷贝的大小及剩余的大小,直至文件完成拷贝,提示用户文件已经拷贝完成

实现思路:
- 创建 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();
}
}
}
编写Java程序,使用 Java 的 I/O 流将 H:\eclipse.zip 文件拷贝至 E 盘下,重新命名为 eclipse 安装 .zip。的更多相关文章
- 我的第一个Java程序和Java简介
public calss HelloWorld{ public static void main(String[] args){ System.out.println("Hello Worl ...
- java中把文件拷贝到指定目录下最简单几种方法
java中把文件拷贝到指定目录下最简单几种方法 String savePath = "D:/file";// 文件保存到d盘的file目录下 File savefile = n ...
- Android JNI编程(八)——体验AS2.2.2编写Jni程序、Java调C、C调Java函数、将C代码中的Log打印至Logcat
版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/. 目录(?)[+] 不得不说在AS2.2以上的版本进行开发就一个字——爽,在2.0上使用jni出 ...
- 第一个java程序以及java的运行机制
课堂要点: 编写第一个java程序以及理解java的运行机制. 1.基本命令介绍: javac命令: 编译java文件得到.class字节码文件 -encoding 参数:指定编译的编码 java命令 ...
- 我的第7个java程序--把java web项目改为java project项目--mybatis
连接数据库需要 程序,连接字符串,查询语句 主程序->读取连接字符串->读取查询语句->把查询到的值赋值给映射对象->打印对象属性 java project的好处,不用做那么多 ...
- JAVA学习第四十七课 — IO流(一):文件的读写
输入流和输出流相对于内存 将外部设备的数据读取到内存中:输入 将内存中的数据写入外部设备中:输出 IO流经常使用基类 字节流的抽象基类:InputStream,OutputStream 字符的抽象基类 ...
- 编写高质量代码:改善Java程序的151个建议 --[117~128]
编写高质量代码:改善Java程序的151个建议 --[117~128] Thread 不推荐覆写start方法 先看下Thread源码: public synchronized void start( ...
- Java编写串口程序
用Java编写串口程序一般都会用到这个 http://fizzed.com/oss/rxtx-for-java 根据电脑的情况下载 解压以后有安装文档 For a JDK installation: ...
- 一劳永逸Java环境配置,以及编写我的第一个Java程序
Java环境配置,以及编写我的第一个Java程序 配置步骤 1.下载jdk 2.安装步骤 3.配置环境 4.我的第一个Java程序 配置步骤 网上的教程有很多,方法也都不尽相同.今天我就分享一下我的配 ...
随机推荐
- linux下的C++多线程
原文链接:http://blog.csdn.net/lee1054908698/article/details/54633056 本随笔作为多线程笔记使用,内容完全照搬原博 多线程是多任务处理的一种特 ...
- 【SpringBoot】几种定时任务的实现方式
SpringBoot 几种定时任务的实现方式 Wan QingHua 架构之路 定时任务实现的几种方式: Timer:这是java自带的java.util.Timer类,这个类允许你调度一个java ...
- Output of C++ Program | Set 13
Predict the output of following C++ program. 1 #include<iostream> 2 using namespace std; 3 4 c ...
- win10安装两台mysql-5.7.31实例
1. 下载 mysql5.7.31 压缩包: (1)百度云下载: 链接:https://pan.baidu.com/s/1jgxfvIYzg8B8ahxU9pF6lg 提取码:fiid (2)官网下载 ...
- 【编程思想】【设计模式】【行为模式Behavioral】观察者模式Observer
Python转载版 https://github.com/faif/python-patterns/blob/master/behavioral/observer.py #!/usr/bin/env ...
- Dubbo提供者的异步执行
从前面"对提供者的异步调用"例子可以看出,消费者对提供者实现了异步调用,消费者线程的执行过程不再发生阻塞,但提供者对IO耗时操作仍采用的是同步调用,即IO操作仍会阻塞Dubbo的提 ...
- 【Java 8】Stream中的Pipeline理解
基于下面一段代码: public static void main(String[] args) { List<String> list = Arrays.asList("123 ...
- 【antd】如何自定义antd组件form表单中Form.Item里的内容组件
需求:现有一个form表单,但是其中一个元素比较复杂,并不是简单的输入框或者下拉框之类的.但是我又希望能通过form.validateFields().then()去获得它的值,就不需要在当前页面写大 ...
- [BUUCTF]PWN——mrctf2020_shellcode
mrctf2020_shellcode 附件 步骤: 例行检查,64位程序,开启了relro和pie,没有nx,肯定是用shellcode最方便了 本地试运行一下,看看大概的情况 64位ida载入,根 ...
- [BUUCTF]REVERSE——[WUSTCTF2020]level2
[WUSTCTF2020]level2 附件 步骤: 例行检查,32位程序,upx壳儿 脱完壳儿,扔进32位ida,习惯性的检索字符串,在我没找到什么关键信息,准备去看main函数的时候,将字符串拉到 ...