java用流实现创建文件夹, 文件改名, 文件删除, 文件复制

    创建TestFileManager类,在本类中分别创建factFile()方法(遍历文件夹中所有的文件)、console()方法(换行)、createFolder()方法(创建文件夹)、

    renameFile()方法(改名)、deleteFile()方法(删除文件)、copyFile()方法(复制文件)、showContent()(每一次操作完成重新输出所有文件);

package com.maya.hanqi.filemanager;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class TestFileManager {

    private static Map<String, File> fileMap = new HashMap<String, File>();

    private static boolean lock = true;

    public static void main(String[] args) {
        Scanner scanner = null;
        while (lock) {
            showContent();
            scanner = new Scanner(System.in);
            System.out.println("1---在选定的目录下创建文件夹");
            System.out.println("2---将选定的文件改名");
            System.out.println("3---将选定的文件删除");
            System.out.println("4---将选定的文件复制到另一个路径");
            System.out.println("5---退出");
            String console = scanner.nextLine();
            if ("1".equals(console)) {
                System.out.println("想在哪个文件夹下创建 ?");
                String path = scanner.nextLine();
                System.out.println("输入新文件夹的名字...");
                String folderName = scanner.nextLine();
                createFolder(path, folderName);
            }
            if ("2".equals(console)) {
                System.out.println("说 ! 改谁 ?");
                String fname = scanner.nextLine();
                System.out.println("改成什么 ?");
                String targetName = scanner.nextLine();
                renameFile(fname, targetName);
            }
            if ("3".equals(console)) {
                System.out.println("又看谁不顺眼了啊 ?");
                String fname = scanner.nextLine();
                deleteFile(fname);
            }
            if ("4".equals(console)) {
                System.out.println("复制哪个 ?");
                String fname = scanner.nextLine();
                System.out.println("复制到哪里 ?");
                String targetPath = scanner.nextLine();
                copyFile(fname, targetPath);
            }
            if ("5".equals(console)) {
                lock = false;
                System.err.println("系统已经退出 !");
            }
        }
        scanner.close();
    }

    public static void showContent() {
        File file = new File("E:\\java\\folder");
        System.out.println(file.getName());
        fileMap.put(file.getName(), file);
        factFile(file, 1);
    }

    public static void copyFile(String fname, String targetPath) {
        File file = fileMap.get(fname);
        BufferedReader br = null;
        BufferedWriter bw = null;
        String sc = null;
        if (!(file == null)) {
            if (fileMap.get(targetPath).isDirectory()) {
                try {
                    File newFile = new File(fileMap.get(targetPath).getPath() + "\\" + fname);
                    br = new BufferedReader(new FileReader(fileMap.get(fname)));
                    bw = new BufferedWriter(new FileWriter(newFile));
                    while ((sc = br.readLine()) != null) {
                        bw.write(sc);
                    }
                    br.close();
                    bw.close();
                    System.err.println("文件复制成功 !");
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            } else {
                System.err.println("目标路径不是文件夹, 不能复制 !");
                return;
            }
        } else {
            System.err.println("输入的路径不存在 !");
        }
    }

    public static void deleteFile(String fname) {
        File file = fileMap.get(fname);
        if (!(file == null)) {
            if(file.listFiles().length > 0) {
                System.err.println("不是空文件夹, 无法删除 !");
                return;
            }
            file.delete();
            fileMap.remove(fname);
            System.err.println("文件已删除 !");
        } else {
            System.err.println("输入的路径不存在 !");
        }
    }

    public static void renameFile(String fname, String targetName) {
        File file = fileMap.get(fname);
        if (!(file == null)) {
            File newFile = new File(file.getParentFile().getPath() + "\\" + targetName);
            file.renameTo(newFile);
            System.out.println("文件名已经更改 !");
        } else {
            System.err.println("输入的路径不存在 !");
        }
    }

    public static void createFolder(String address, String folderName) {
        File file = fileMap.get(address);
        if (!(file == null)) {
            File newFile = new File(file.getPath() + "\\" + folderName);
            if (newFile.mkdirs()) {
                System.err.println("文件夹成功创建");
            } else {
                System.err.println("创建文件夹失败");
            }
        } else {
            System.err.println("输入的路径不存在 !");
        }
    }

    public static void console(int k) {
        for (int a = 0; a < k; a++) {
            System.out.print("   ");
        }
    }

    public static void factFile(File file, int length) {
        if (file.exists() && file.isDirectory()) {
            File[] fs = file.listFiles();
            for (int i = 0; i < fs.length; i++) {
                console(length);
                System.out.println(fs[i].getName());
                factFile(fs[i], length + 1);
                fileMap.put(fs[i].getName(), fs[i]);
            }
        }
    }
}
时间: 2024-12-28 05:49:21

java用流实现创建文件夹, 文件改名, 文件删除, 文件复制的相关文章

Nodejs下如何判断文件夹的存在以及删除文件夹下所有的文件

代码如下: 1 var folder_exists = fs.existsSync('./cache'); 2 3 if(folder_exists == true) 4 { 5 var dirList = fs.readdirSync('./cache'); 6 7 dirList.forEach(function(fileName) 8 { 9 fs.unlinkSync('./cache/' + fileName); 10 }); 11 } 第一行代码判断当前文件夹下有无cache目录,如

Web 在线文件管理器学习笔记与总结(15)剪切文件夹 (16)删除文件夹

(15)剪切文件夹 ① 通过rename($oldname,$newname) 函数实现剪切文件夹的操作 ② 需要检测目标文件夹是否存在,如果存在还要检测目标目录中是否存在同名文件夹,如果不存在则剪切 dir.function.php 添加: //剪切文件夹 function cutFolder($src,$dst){ if(!file_exists($dst)){ return '目标目录不存在'; }else{ if(!is_dir($dst)){ return '不是目录'; }else{

如何在linux系统下对文件夹名有空格的文件夹进行操作

http://www.2cto.com/os/201409/335119.html 在Windows操作系统中可以轻易地创建\移动\删除文件夹名带有空格的文件夹, 而在linux则需要进行一些特殊的处理才能实现以上功能. (1)创建文件夹 mkdir my\ first 这条命令创建了文件夹"my first",文件夹名中my和first之间有一个空格,在命令行中需要 添加一个"\"符号和一个空格的组合 mkdir my\ \ tow 这条命令创建了文件夹"

在存放源程序的文件夹中建立一个子文件夹 myPackage。例如,在“D:\java”文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage)。在 myPackage 包中创建一个YMD类,该类具有计算今年的年份、可以输出一个带有年月日的字符串的功能。设计程序SY31.java,给定某人姓名和出生日期,计算该人年龄,并输出该人姓名、年龄、出生日期。程序使用YM

题目补充: 在存放源程序的文件夹中建立一个子文件夹 myPackage.例如,在"D:\java"文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage).在 myPackage 包中创建一个YMD类,该类具有计算今年的年份.可以输出一个带有年月日的字符串的功能.设计程序SY31.java,给定某人姓名和出生日期,计算该人年龄,并输出该人姓名.年龄.出生日期.程序使用YMD的方法来计算年龄. 主要考包的运用 用到java.util.Calendar

Java使用线程池递归压缩文件夹下面的所有子文件

本文将介绍Java中利用线程池递归的方式压缩文件夹下面的所有子文件,具体方法如下: Gzip单个文件压缩 对于单个文件使用GZip压缩. package date0805.demo1; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream

从键盘接收两个文件夹路径,把其中一个文件夹(包含内容),拷贝到另一个文件夹中

package cn.it.text; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.Scanner; /* * 1.从键盘接收两个文件夹路径,把其中一个文件夹(包含内容) * 拷贝到另一个文件

android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件

1.下载工具 xstream 下载最新版本地址: https://nexus.codehaus.org/content/repositories/releases/com/thoughtworks/xstream/ 下载完成后 把jar包导入到自己的android项目中 2.asset 文件夹 下的 aa.xml 文件 <?xml version="1.0" encoding="UTF-8"?><product>    <name>

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.Simple

ubuntu 用shell脚本实现将当前文件夹下全部文件夹中的某一类文件复制到同一文件夹下

当前文件夹下有一些文件和文件夹,当中每一个文件夹里都有若干.txt文件. 如今要求在当前文件夹创建一个新文件夹all,且将那些文件夹全部.txt文件 都复制到文件夹all.在ubuntu12.04的shell脚本实现例如以下: #!/bin/sh # 提示信息 echo "start:" # 定义变量 dst=all pst=.txt # 拷贝文件到目标目录 if [ -d ${dst} ] then echo "${dst} existed" else echo

修改C盘“用户”文件夹下面某个账户的文件夹名称

首先,这个文件夹是根据用户账户名来创建的,可能用户账户的名字就拼写错了.我们可以通过以下的方式来既修改了用户名,又修改了用户对应的文件夹名: 假设我们需要将帐户A改名为B.首先我们需要用另一个管理员帐户C登陆系统. 1.在控制面板-〉用户帐户中将帐户A改名为B. 2.打开C:\Users或"用户"文件夹,将文件夹A重命名为B. 3.点击开始,点击运行,输入regedit,点击确定. 4.在注册表编辑器中定位到以下路径: HKEY_LOCAL_MACHINE\SOFTWARE\Micro