控制台程序,创建和删除目录以及复制和移动文件。

 import java.nio.file.*;
import java.nio.file.attribute.*;
import java.io.IOException; public class MoveAndCopyFiles {
static void createSingleDirectory(Path path){
try{
Files.createDirectories(path);
System.out.println("\n" + path + " directory created.");
} catch (IOException e) {
System.out.println("\nDirectory creation failed:\n" + e);
}
} static boolean isDirectory(Path path) {
try{
BasicFileAttributes attr =Files.readAttributes(path,BasicFileAttributes.class);
return attr.isDirectory();
} catch (IOException e) {
System.err.println("I/O error in isDirectory method. " + e);
}
return false;
} static boolean copyFiles(Path from, Path to) {
if(!isDirectory(from)) {
System.out.println("Cannot copy files. " + from + " is not a directory.");
return false;
}
if(!isDirectory(to)) {
System.out.println("Cannot copy files. " + to + " is not a directory.");
return false;
} try (DirectoryStream<Path> files =Files.newDirectoryStream(from, "*.*")) {
System.out.println("Starting copy...");
for(Path file : files) {
Files.copy(file, to.resolve(file.getFileName()));
System.out.println(" " + file.getFileName() + " copied.");
}
} catch (IOException e) {
System.err.println("I/O error in copyFiles. " + e);
return false;
}
return true;
} static boolean moveFiles(Path from, Path to) {
if(!isDirectory(from)) {
System.out.println("Cannot move files. " + from + " is not a directory.");
return false;
}
if(!isDirectory(to)) {
System.out.println("Cannot move files. " + to + " is not a directory.");
return false;
} try (DirectoryStream<Path> files =Files.newDirectoryStream(from, "*.*")) {
System.out.println("Starting move...");
for(Path file : files) {
Files.move(file, to.resolve(file.getFileName()));
System.out.println(" " + file.getFileName() + " moved.");
}
} catch (IOException e) {
System.err.println("I/O error in copyFiles. " + e);
return false;
}
return true;
} static void waitForEnter() {
try {
System.out.println("waiting...");
System.in.read();
}catch(IOException e) {
System.err.println(e);
}
} public static void main(String[] args) {
Path current =Paths.get("E:/JavaProject/BeginningJava/Ch9_Directories/MoveAndCopyFiles");
Path newDir =Paths.get("junkDir");
newDir=newDir.toAbsolutePath();
createSingleDirectory(newDir); System.out.println("Copying files from " + current + " to " + newDir);
if(!copyFiles(current,newDir)) {
System.out.println("Copying files failed.");
return;
}
System.out.println("You can look at the directory to verify that the copy has worked.");
System.out.println("Press Enter to continue.");
waitForEnter(); Path newDir2 =Paths.get("junkDirBackup");
newDir2=newDir2.toAbsolutePath();
createSingleDirectory(newDir2); System.out.println("Moving files from " + newDir + " to " + newDir2);
if(!moveFiles(newDir,newDir2)) {
System.out.println("Moving files failed.");
return;
} System.out.println("You can look at the directory to verify that the move has worked.");
System.out.println("Press Enter to continue.");
waitForEnter(); try {
System.out.println("Deleting " + newDir + "...");
Files.delete(newDir);
}catch(IOException e) {
System.err.println("Deleting " + newDir + " failed:\n" + e);
} try (DirectoryStream<Path> files =Files.newDirectoryStream(newDir2, "*.*")) {
System.out.println("Deleting files from " + newDir2 + "...");
for(Path file:files) {
Files.delete(file);
System.out.println(" " + file.getFileName() + " deleted.");
}
System.out.println("Deleting " + newDir2 + "...");
Files.delete(newDir2);
} catch (IOException e) {
System.err.println("I/O error deleting files. " + e);
}
}
}

Java基础之访问文件与目录——移动或复制文件和目录(MoveAndCopyFiles)的更多相关文章

  1. Java基础——protected访问修饰符探讨

    Java基础——protected访问修饰符探讨 根据官方说法:(如图) protected修饰符是可以修饰其他包中的子孙类的,但是我做了个实验,结果发现了一个有趣的现象! 具体请往下看: packa ...

  2. Java基础之访问权限控制

    Java基础之访问权限控制 四种访问权限 Java中类与成员的访问权限共有四种,其中三种有访问权限修饰词:public,protected,private. Public:权限最大,允许所有类访问,但 ...

  3. Web 在线文件管理器学习笔记与总结(13)重命名文件夹(14)复制文件夹

    (13)重命名文件夹 ① 重命名文件夹通过 rename($oldname,$newname) 实现 ② 检测文件夹名是否符合规范 ③ 检测当前目录中是否存在同名文件夹名称,如果不存在则重命名成功 i ...

  4. c# 封装的文件夹操作类之复制文件夹

    c#  封装的文件夹操作类之复制文件夹 一.复制文件夹原理: 1.递归遍历文件夹 2.复制文件 二.FolderHelper.cs /// <summary> /// 文件夹操作类 /// ...

  5. 用winscp从本地上传文件到服务器上出现复制文件到远端时错误。

    用winscp从本地上传文件到服务器上出现复制文件到远端时错误. 错误码:4 服务器返回的错误消息:write failed 报错如下图所示: 分析过程: 1.刚开始以为是权限不够,后面上网查了一下是 ...

  6. IO流,字节流复制文件,字符流+缓冲复制文件

    JAVAIO如果按流向分:输入流和输出流两种 输入流的基类:InputStream   Reader 输出流的基类:OutputStream   Writer 如果按数据单元划分:字节流和字符流 字节 ...

  7. java基础知识回顾之javaIO类--File类应用:获取指定目录下面的指定扩展名的文件,将文件的绝对路径写入到目的文件当中

    /** * File文件综合应用 * 需求:获取指定目录下面,指定扩展名的文件,将文件的绝对路径写到文本文件当中. *  * 思路:1.需要深度遍历.--递归 * 2.遍历的过程中过滤指定扩展名的文件 ...

  8. RandomAccessFile(),读写文件数据的API,以及复制文件操作

    package seday03;import java.io.File;import java.io.RandomAccessFile; import java.io.IOException; /** ...

  9. UNIX环境编程学习笔记(4)——文件I/O之dup复制文件描述符

    lienhua342014-08-23 UNIX 提供了两个函数 dup 和 dup2 用于复制一个现存的文件描述符. #include <unistd.h> int dup(int fi ...

  10. Java基础之访问文件与目录——测试文件或目录的路径(TryPath)

    控制台程序,测试文件或目录的路径. import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.FileSy ...

随机推荐

  1. Moving in Unity

    转自:http://angryant.com/2014/03/07/Moving-in-Unity/ ,详细描述了物体在unity中移动的几种方式,并且给出了代码描述,对加深对Unity理解很有帮助, ...

  2. Bootstrap页面布局4 - 嵌套布局

    嵌套布局: 在一行中,有三列,每一列都有对应的BS栅格系统中的格子,以下例中因为 .row中的div对应的class分别是span4,span4,span4,所以其每一列对应的格子数是 4,4,4 现 ...

  3. laravel 取sql语句

    \DB::connection()->enableQueryLog(); some sql action... $query = \DB::getQueryLog(); $lastQuery = ...

  4. P2882 Face The Right Way - USACO07MAR

    这道题没有一个比较详细的题解,我来提供一份. 首先我们可以知道,反转区间的顺序对结果没有影响,而且一个区间如果翻转两次以上是没有意义的,所以,问题就变成了求哪些区间需要反转. 我们枚举k.对于每一个k ...

  5. java Direct Buffer

    public static ByteBuffer allocate (int capacity)       //性能低于下面的Direct,因为是把内存建立在JVM堆上,容易被GC回收,可能需要多次 ...

  6. Jquery小例子:全选按钮、加事件、挂事件;parent()语法;slideToggle()语法;animate()语法;元素的淡入淡出效果:fadeIn() 、fadeOut()、fadeToggle() 、fadeTo();function(e):e包括事件源和时间数据;append() 方法

    function(e): 事件包括事件源和事件数据,事件源是指是谁触发的这个事件,谁就是事件源(div,按钮,span都可以是事件源),时间数据是指比如点击鼠标的事件中,事件数据就是指点击鼠标的左建或 ...

  7. php mongodb类

    class HMongodb { private $mongo;    //Mongodb连接    private $curr_db_name;    private $curr_table_nam ...

  8. SQL Server数据库层面自定义数据同步性能测试

    场景: A DB Server位于上海 B DB Server位于广州 现有特殊需求,需要通过数据链接将数据从A服务器表T1数据同步至B表T2 性能测试: 现模拟T1表9000笔数据 方式一:直接将9 ...

  9. angularJS自定义指令scope代替link

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  10. Android笔记: Android版本号

    由于有2套版本号 总是对应不准 记下来做过标记 Android 4.3 ----18 Android 4.2---17 Android 4.1---16 Android 4.0.3---15Andro ...