Jay
Jay

Reputation: 1265

How to copy-paste, and cut-paste file or folder in java?

I made a desktop app in java with netbeans platform. In my app I want to give separate copy-paste and cut-paste option of file or folder.

So how can I do that? I tried Files.copy(new File("D:\\Pndat").toPath(),new File("D:\\212").toPath(), REPLACE_EXISTING);. But I don't get the exact output.

If there any other option then suggest me.

Upvotes: 3

Views: 19080

Answers (4)

Java42
Java42

Reputation: 7706

I think this question relates to using the system clipboard for copying a file specified in a Java app and using the OS "Paste" function to copy the file to a folder. Here is a short instructional example that will show you how to add a single file to the OS clipboard for later doing an OS "Paste" function. Tweak as necessary and add error/exception checking as needed.

As a secondary, this code also places the file name on the clipboard so you can paste the file name into document editors.

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

Upvotes: 1

vels4j
vels4j

Reputation: 11298

Use FileUtils from apache io and do FileUtils.copyDirectory(sourceDir, destDir);

You can also do the following file operations

  • writing to a file
  • reading from a file
  • make a directory including parent directories
  • copying files and directories
  • deleting files and directories
  • converting to and from a URL
  • listing files and directories by filter and extension
  • comparing file content
  • file last changed date

Download link for apache i/o jar.

Upvotes: 3

Abraham
Abraham

Reputation: 603

You can write things by yourself using FileOutputStream and FileInputStream or you can used Apache Camel.

Upvotes: 0

Alya&#39;a Gamal
Alya&#39;a Gamal

Reputation: 5638

In case of "cut-paste" you can use renameTo() like this:

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

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

In case of "copy-paste" you need to read in Input and Output stream.

Upvotes: 5

Related Questions