Path,Files巩固,题目:从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
这个题目用传统的File,InputStream可以做,但是如果用Files,Path类做,虽然思路上会困难一些,但是代码简洁了很多,以下是代码:
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.Scanner; //从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
public class Demo1 {
public static void main(String[] args) throws IOException {
Path path1=getPath(); //获取源文件夹路径
Path path2=getPath(); //获取目的文件夹路径
Path path=path1.getFileName(); //获取源文件的最后一个文件名
path2=path2.resolve(path); //在目的文件中建立文件夹存储源文件的内容
copy(path1,path2);
} public static void copy(Path path1, Path path2) throws IOException {
Files.walkFileTree(path1, new SimpleFileVisitor<Path>() {
//在访问文件夹前执行的操作
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
Path p1=path1.relativize(dir); //获取文件夹相对路径
Path p2=path2.resolve(p1); //在目的文件夹中建立路径
Files.createDirectories(p2); //建立文件夹.
return FileVisitResult.CONTINUE; //继续访问.
} @Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
Path p1=path1.relativize(file); //获取文件相对于源文件的相对路径
Path p2=path2.resolve(p1); //获取文件在目的文件中的路径位置
Files.copy(file, p2); //利用Files类的copy功能复制文件
return FileVisitResult.CONTINUE; //继续访问.
} @Override
public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
return FileVisitResult.CONTINUE; //访问失败,继续访问.
} });
} public static Path getPath() {
System.out.println("请输入一个文件夹!");
String str=null;
Scanner sc=new Scanner(System.in);
str=sc.nextLine();
Path path=Paths.get(str); //获取路径
if(!Files.exists(path)) {
System.out.println("请输入一个存在的文件夹");
getPath();
}
if(Files.isRegularFile(path)) {
System.out.println("请输入文件!");
getPath();
}
return path;
}
}
Path,Files巩固,题目:从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中的更多相关文章
- 使用基础知识完成java小作业?强化练习-1.输入数组计算最大值-2.输出数组反向打印-3.求数组平均值与总和-4.键盘输两int,并求总和-5.键盘输三个int,并求最值;
完成几个小代码练习?让自己更加强大?学习新知识回顾一下基础? 1.输入数组计算最大值 2.输出数组反向打印 3.求数组平均值与总和 4.键盘输两int,并求总和 5.键盘输三个int,并求最值 /* ...
- 键盘接收用户输入案例2(案例内容包含键盘接收 int、String、Char、double、boolean)等类型及介绍
int类型: int age = input.nextInt(); double类型: double score = input.nextDouble(); String类型: String n ...
- 九度oj 题目1472:求两个多项式的和
题目描述: 输入两个多项式,计算它们的和. 每个多项式有若干对整数表示,每组整数中,第一个整数表示系数(非0),第二个整数表示该项的次数. 如由3 3 5 -2 1 4 0表示3x^5 - 2 * x ...
- Java NIO 学习笔记(五)----路径、文件和管道 Path/Files/Pipe
目录: Java NIO 学习笔记(一)----概述,Channel/Buffer Java NIO 学习笔记(二)----聚集和分散,通道到通道 Java NIO 学习笔记(三)----Select ...
- 03-java学习-基本数据类型-运算符-键盘接收用户输入
java的八大基本数据类型: 类型转换的基本原则: java整数的默认类型是int,小数的默认类型是double 运算符: 算术运算符.连接.赋值.关系.逻辑.三目运算符等…… 键盘接收用户输入: j ...
- 代码实现:从键盘输入接收一个文件夹路径,打印出该文件夹下所有的.java文件名
package com.loaderman.test; import java.io.File; import java.io.FileReader; import java.util.Scanner ...
- 代码实现从键盘接收一个字符串, 程序对其中所有字符进行排序,例如键盘输入: helloitcast程序打印:acehillostt
package com.loaderman.test; import java.util.Comparator; import java.util.Scanner; import java.util. ...
- 【剑指Offer面试编程题】题目1519:合并两个排序的链表--九度OJ
题目描述: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. (hint: 请务必使用链表.) 输入: 输入可能包含多个测试样例,输入以EOF结束. 对于每 ...
- 【剑指Offer面试编程题】题目1512:用两个栈实现队列--九度OJ
题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 输入: 每个输入文件包含一个测试样例. 对于每个测试样例,第一行输入一个n(1<=n<=1 ...
随机推荐
- java 面试每日一题2
题目:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. 注:如果想单独输出中文的个数和中文符号的个数,只需把isChinese()中的if语句修改 知识补充: java不像C中拥有s ...
- ACM第二站————归并排序
转载请注明出处,谢谢!http://www.cnblogs.com/Asimple/p/5459664.html 归并排序————二分的思想 以中间的数为基准,每次排序都将比其小[升序排](大[降序排 ...
- 20150625_Andriod_01_ListView1_条目选中
android listview 参考地址: http://www.cnblogs.com/zhengbeibei/archive/2013/05/14/3078805.html http://xy ...
- ExecutorService线程池讲解
ExecutorService 建立多线程的步骤: 1.定义线程类 class Handler implements Runnable{ } 2.建立ExecutorService线程池 Execut ...
- Get与Post的一些总结
1.GET请求的数据会附在URL之后,POST把提交的数据则放置在是HTTP包的包体中. 2."GET方式提交的数据最多只能是1024字节这句话是错误的 URL不存在参数上限的问题,HTTP ...
- dot函数和*的区别
dot函数是常规的矩阵相乘 *是特殊的乘法 import numpy as np a = [[1,2,3],[4,5,6]] a = np.array(a) b = [[1,2],[4,5],[3,6 ...
- ZOJ 3593 One Person Game
One Person Game Time Limit: 2 Seconds Memory Limit: 65536 KB There is an interesting and simple ...
- WDCP控制面板如何安装PDO_mysql组件
http://osacar.iteye.com/blog/2098431 执行wget -c http://down.wdlinux.cn/in/pdo_mysql_ins.sh再执行chmod 75 ...
- HDU4549 M斐波那契数列 矩阵快速幂+欧拉函数+欧拉定理
M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Sub ...
- linux下查看分区信息和剩余空间大小
1. 查看Linux系统分区信息,使用命令“fdisk -l” 2.使用命令”df -l和df -h“具体查看分区使用状况.实际这两个命令具有一样的作用区别是显示的容量单位不一样,当然也可以直接使用明 ...