3

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

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

如果还有其他选择,那么建议我。

4

4 回答 4

4

在“剪切粘贴”的情况下,您可以renameTo()这样使用:

File source = new File("////////Source path");
File destination = new File("//////////destination path");

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

在“复制粘贴”的情况下,您需要读取输入和输出流。

于 2012-12-29T15:10:43.403 回答
3

使用来自 apache io 的 FileUtils 并执行FileUtils.copyDirectory(sourceDir, destDir);

还可以进行以下文件操作

  • 写入文件
  • 从文件中读取
  • 创建一个包含父目录的目录
  • 复制文件和目录
  • 删除文件和目录
  • 与 URL 相互转换
  • 按过滤器和扩展名列出文件和目录
  • 比较文件内容
  • 文件上次更改日期

apache i/o jar 的下载链接

于 2012-12-30T09:05:43.560 回答
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);
}
}
于 2013-03-28T01:21:56.367 回答
0

您可以使用FileOutputStreamFileInputStream自己编写内容,也可以使用Apache Camel

于 2012-12-30T08:34:11.420 回答