在使用java进行开发时常常会用到文件和目录的增删复制等方法。我写了一个小工具类。和大家分享,希望大家指正:
package com.wangpeng.utill; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.InputStream; import java.io.PrintWriter; /** * @author wangpeng * */ public class ToolOfFile { /** * 创建目录 * * @param folderPath * 目录目录 * @throws Exception */ public static void newFolder(String folderPath) throws Exception { try { java.io.File myFolder = new java.io.File(folderPath); if (!myFolder.exists()) { myFolder.mkdir(); } } catch (Exception e) { throw e; } } /** * 创建文件 * * @param filePath * 文件路径 * @throws Exception */ public static void newFile(String filePath) throws Exception { try { File myFile = new File(filePath); if (!myFile.exists()) { myFile.createNewFile(); } } catch (Exception e) { throw e; } } /** * 创建文件,并写入内容 * * @param filePath * 文件路径 * @param fileContent * 被写入的文件内容 * @throws Exception */ public static void newFile(String filePath, String fileContent) throws Exception { // 用来写入字符文件的便捷类 FileWriter fileWriter = null; // 向文本输出流打印对象的格式化表示形式,使用指定文件创建不具有自己主动行刷新的新 PrintWriter printWriter = null; try { File myFile = new File(filePath); if (!myFile.exists()) { myFile.createNewFile(); } fileWriter = new FileWriter(myFile); printWriter = new PrintWriter(fileWriter); printWriter.print(fileContent); printWriter.flush(); } catch (Exception e) { throw e; } finally { if (printWriter != null) { printWriter.close(); } if (fileWriter != null) { fileWriter.close(); } } } /** * 复制文件 * * @param oldPath * 被拷贝的文件 * @param newPath * 复制到的文件 * @throws Exception */ public static void copyFile(String oldPath, String newPath) throws Exception { InputStream inStream = null; FileOutputStream outStream = null; try { int byteread = 0; File oldfile = new File(oldPath); // 文件存在时 if (oldfile.exists()) { inStream = new FileInputStream(oldfile); outStream = new FileOutputStream(newPath); byte[] buffer = new byte[1444]; while ((byteread = inStream.read(buffer)) != -1) { outStream.write(buffer, 0, byteread); } outStream.flush(); } } catch (Exception e) { throw e; } finally { if (outStream != null) { outStream.close(); } if (inStream != null) { inStream.close(); } } } /** * 复制文件 * @param inStream 被拷贝的文件的输入流 * @param newPath 被复制到的目标 * @throws Exception */ public static void copyFile(InputStream inStream, String newPath) throws Exception { FileOutputStream outStream = null; try { int byteread = 0; outStream = new FileOutputStream(newPath); byte[] buffer = new byte[1444]; while ((byteread = inStream.read(buffer)) != -1) { outStream.write(buffer, 0, byteread); } outStream.flush(); } catch (Exception e) { throw e; } finally { if (outStream != null) { outStream.close(); } if (inStream != null) { inStream.close(); } } } /** * 复制目录 * * @param oldPath * 被复制的目录路径 * @param newPath * 被复制到的目录路径 * @throws Exception */ public static void copyFolder(String oldPath, String newPath) throws Exception { try { (new File(newPath)).mkdirs(); // 假设目录不存在 则建立新目录 File a = new File(oldPath); String[] file = a.list(); File tempIn = null; for (int i = 0; i < file.length; i++) { if (oldPath.endsWith(File.separator)) { tempIn = new File(oldPath + file[i]); } else { tempIn = new File(oldPath + File.separator + file[i]); } if (tempIn.isFile()) { copyFile(tempIn.getAbsolutePath(), newPath + "/" + (tempIn.getName()).toString()); } else if (tempIn.isDirectory()) {// 假设是子目录 copyFolder(oldPath + "/" + file[i], newPath + "/" + file[i]); } } } catch (Exception e) { throw e; } } /** * 删除文件 * * @param filePathAndName */ public static void delFileX(String filePathAndName) { File myDelFile = new File(filePathAndName); myDelFile.delete(); } /** * 删除目录 * * @param path */ public static void delForder(String path) { File delDir = new File(path); if (!delDir.exists()) { return; } if (!delDir.isDirectory()) { return; } String[] tempList = delDir.list(); File temp = null; for (int i = 0; i < tempList.length; i++) { if (path.endsWith(File.separator)) { temp = new File(path + tempList[i]); } else { temp = new File(path + File.separator + tempList[i]); } if (temp.isFile()) { temp.delete(); } else if (temp.isDirectory()) { // 删除完里面全部内容 delForder(path + "/" + tempList[i]); } } delDir.delete(); } public static void main(String[] args) { String oldPath = "F:/test/aaa/"; String newPath = "F:/test/bbb/"; try { // ToolOfFile.newFolder("F:/test/hello/"); // ToolOfFile.newFile("F:/test/hello/world.txt","我爱你,the world! "); ToolOfFile.copyFolder(oldPath, newPath); // ToolOfFile.delForder("F:/test/hello"); } catch (Exception e) { e.printStackTrace(); } System.out.println("OK"); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
前面小节介绍了如何使用 touch 和 mkdir 创建文件和目录,本小节介绍如何删除文件和目录。 1. 删除文件 使用 rm 文件名 命令可以删除文件,以删除普通文件为例: ls -l # 列出当前目录下的所有文件 rm test.c # 使用 rm 命令删除 test.c 文件 ls -l # 再次查看当前目录下的所有文件 执行结果如下图: 可以看到 test.c 文件已经被删除了
我想使用robocopy或xcopy将目录及其内容复制到远程共享。 我已经尝试过了: 不过,这并不复制foo目录。 这将文件和目录从远程路径复制到本地路径: 但反过来也没什么区别: 如您所见,foo目录没有被复制。 那么,如何将本地目录文件复制到远程路径呢? ---编辑--- 使用robocopy foo\\172.16.254.41\c$\temp/copyall/E ---编辑2--- 结果是
本文向大家介绍Java删除文件、目录及目录下所有文件的方法实例,包括了Java删除文件、目录及目录下所有文件的方法实例的使用技巧和注意事项,需要的朋友参考一下 前言 本文主要实现的功能是删除某个目录及目录下的所有子目录和文件,涉及到的知识点:File.delete()用于删除“某个文件或者空目录”!所以要删除某个目录及其中的所有文件和子目录,要进行递归删除。 具体代码示例如下: 总结 以上就是这篇
本章主要介绍文件和目录操作,包含以下部分: 读写文本文件 读写二进制文件 os 模块
文件和目录操作接口 函数 int open (const char *file, int flags,...) 打开文件 int close (int fd) 关闭文件 int read (int fd, void *buf, size_t len) 读取数据 int write (int fd, const void *buf, size_t len) 写入数
问题内容: 我想知道,删除包含所有文件的目录的最简单方法是什么? 我正在删除一个文件夹,但是,如果其中有文件,我将无法删除。 问题答案: 如今至少有两种选择。 在删除文件夹之前,请删除其所有文件和文件夹(这意味着递归!)。这是一个例子: } 如果您使用的是5.2+,则可以使用RecursiveIterator来实现,而无需自己实现递归: