2012-12-29 162 views
2

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

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

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

+1

所以你想从另一个文件夹使用swing应用程序复制文件一个文件夹?更新有问题的代码,以便检查你已经尝试了什么以及问题在哪里 – vels4j

+0

哪部分你无法做到?选择文件/目录?提取选定的文件/目录名称?复制到剪贴板? –

+0

@ TJ-我不知道如何在剪贴板中使用ClipBoard进行复制,剪切和粘贴? – Jay

回答

3

使用Apache的IO FileUtils,做FileUtils.copyDirectory(sourceDir, destDir);

您还可以做下面的文件操作

  • 写入文件
  • 从文件
  • 读作包括目录父目录
  • 复制文件和目录
  • 删除文件和目录
  • 转换和从URL
  • 通过过滤器和扩展列出文件和目录
  • 比较文件内容
  • 文件的最后更改日期

Download link为Apache I/o罐子。

4

在的情况下,“复制粘贴”就可以使用renameTo()这样的:

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

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

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

0

可以使用FileOutputStream中的FileInputStream写自己的东西,或者你可以使用Apache的骆驼

1

我认为这个问题涉及到使用系统剪贴板复制在Java应用程序中指定的文件,并使用OS“粘贴”功能将文件复制到文件夹。这是一个简短的教学示例,它将向您展示如何将单个文件添加到操作系统剪贴板,以便稍后执行操作系统“粘贴”功能。根据需要调整并根据需要添加错误/异常检查。

作为次要代码,此代码还将文件名放在剪贴板上,以便您可以将文件名粘贴到文档编辑器中。

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); 
} 
}