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

 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. pycharm 皮肤主题及个性化设置

    1.设置IDE皮肤主题 File -> Settings -> IDE Settings -> Appearance -> Theme -> 选择“Alloy.IDEA ...

  2. Gmail 启用 POP 标准配置说明:

    接收邮件 (POP3) 服务器 - 要求 SSL:pop.gmail.com使用 SSL:是端口:995 发送邮件 (SMTP) 服务器 - 要求 TLS 或 SSL:smtp.gmail.com使用 ...

  3. 【IOS笔记】Windows

    Windows Every iOS application needs at least one window—an instance of the UIWindow class—and some m ...

  4. 制作支持UEFI PC的Server2008 R2系统安装U盘

    下载R2系统 ISO ed2k://|file|cn_windows_server_2008_r2_standard_enterprise_datacenter_and_web_with_sp1_x6 ...

  5. iptables的详细介绍及配置方法*

    Firewall(防火墙):组件,工作在网络边缘(主机边缘),对进出网络数据包基于一定的规则检查,并在匹配某规则时由规则定义的处理进行处理的一组功能的组件. 防火墙类型:根据工作的层次的不同来划分,常 ...

  6. LENGTH() CHAR_LENGTH()

    http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_length LENGTH(str) Returns the ...

  7. DDL DML DCL SQL

    https://dev.mysql.com/doc/refman/5.7/en/glossary.html#glos_ddl SQL The Structured Query Language tha ...

  8. EFDC主控文件efdc.inp文件的xml格式化处理——转载http://blog.sina.com.cn/s/articlelist_1584892573_0_1.html

    在对EFDC模型进行系统集成时,虽然可以通过一行一行读来进行解析处理,但那将是一个繁琐的工作.我们经过xml格式化处理后,再经xsd转成Dataset类对象,那么整个主控文件就是一个数据库表集合,对其 ...

  9. hibernate manytoone中的lazy EAGER

    Hibernate中的字段映射中的Fetch有两种方式:EAGER和LAZY Eager:全部抓取 Lazy:延迟抓取 如果在字段中声明为Eager,那么在取得当前Bean时,同时会抓取Bean中的关 ...

  10. BAT for循环

    一,数字循环 echo off & color 0A for /l %%i in (1,1,10) do ( echo %%i ) pause > nul 输出: 1 2 3 4 5 6 ...