如何在Java中复制粘贴和剪切粘贴文件或文件夹?

3

我用NetBeans平台在Java中制作了一个桌面应用程序。在我的应用程序中,我想提供文件或文件夹的单独复制粘贴和剪切粘贴选项。

那么我该怎么做呢?我尝试了Files.copy(new File("D:\\Pndat").toPath(),new File("D:\\212").toPath(), REPLACE_EXISTING);。但是我没有得到精确的输出。

如果有其他选项,请建议我。


1
所以你想使用Swing应用程序将一个文件从一个文件夹复制到另一个文件夹?请更新你的代码,这样我们可以检查你尝试了什么以及问题出在哪里。 - vels4j
你哪一部分做不到?选择文件/目录?提取所选文件/目录名称?复制到剪贴板? - TJ-
@TJ- 我不知道如何在Java中使用剪贴板进行复制、剪切和粘贴。你有剪贴板的示例吗? - Jay
@vels4j 我更新了我所做的事情。但是这段代码在 D: 盘创建了 212 个文件夹,但是并没有将 Pndat 文件夹复制到这 212 个文件夹中。那么在 Java 中应该怎么做呢? - Jay
你需要复制整个文件夹吗? - vels4j
@vels4j 但是如何复制整个文件夹并粘贴呢?你有什么想法吗?然后给我建议。 - Jay
4个回答

4
在“剪切-粘贴”情况下,您可以像这样使用renameTo()
File source = new File("////////Source path");
File destination = new File("//////////destination path");

if (!destination.exists()) {
    source.renameTo(destination);
}

如果需要“复制粘贴”,您需要读取输入和输出流。


3

使用apache io中的FileUtils,执行FileUtils.copyDirectory(sourceDir, destDir);即可复制目录。

您还可以进行以下文件操作:

  • 写入文件
  • 从文件读取
  • 创建包括父目录在内的目录
  • 复制文件和目录
  • 删除文件和目录
  • 转换为URL格式或从URL格式转换
  • 按过滤器和扩展名列出文件和目录
  • 比较文件内容
  • 获取文件最后修改日期

apache i/o jar下载链接


1
我认为这个问题涉及到在Java应用程序中指定要复制的文件并使用操作系统的“粘贴”功能将文件复制到文件夹时使用系统剪贴板。以下是一个简短的教学示例,它将向您展示如何将单个文件添加到操作系统剪贴板以便稍后执行操作系统的“粘贴”功能。根据需要进行调整,并根据需要添加错误/异常检查。
作为辅助,此代码还将文件名放置在剪贴板上,以便您可以将文件名粘贴到文档编辑器中。
package com.example.charles.clipboard;

import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.ClipboardOwner;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;

public class JavaToSystemClipboard {

public static void main(final String[] args) throws Exception {
    final File fileOut = new File("someFileThatExists");
    putFileToSystemClipboard(fileOut);

}

public static void putFileToSystemClipboard(final File fileOut) throws Exception {
    final Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
    final ClipboardOwner clipboardOwner = null;

    final Transferable transferable = new Transferable() {
        public boolean isDataFlavorSupported(final DataFlavor flavor) {
            return false;
        }
        public DataFlavor[] getTransferDataFlavors() {
            return new DataFlavor[] { DataFlavor.javaFileListFlavor, DataFlavor.stringFlavor };
        }
        public Object getTransferData(final DataFlavor flavor) {
            if (flavor.equals(DataFlavor.javaFileListFlavor)) {
                final List<String> list = new ArrayList<>();
                list.add(fileOut.getAbsolutePath());
                return list;
            }
            if (flavor.equals(DataFlavor.stringFlavor)) {
                return fileOut.getAbsolutePath();
            }
            return null;
        }
    };
    clipboard.setContents(transferable, clipboardOwner);
}
}

0

你可以使用FileOutputStreamFileInputStream自己编写代码,或者使用Apache Camel


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接