使用Java如何将文本复制到剪贴板
作者:Fy哥
这篇文章主要介绍了使用Java如何将文本复制到剪贴板问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
Java将文本复制到剪贴板
关键代码
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Clipboard类的2个主要方法:
setContents(Transferable contents, ClipboardOwner owner) getContents(Object requestor)
Clipboard类:实现使用剪切/复制/粘贴操作传输数据的机制的类
代码示例(仅供参考)
package exer04; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; public class CopyToClipboard{ public static void main(String[] args) throws Exception{ Transferable canonicalNameSelection = new StringSelection("java"); Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); //实现复制功能:将当前程序中的字符串复制到剪贴板中去 // clipboard.setContents(canonicalNameSelection, null); canonicalNameSelection = clipboard.getContents(null); //获取剪贴板上的内容 Object obj = canonicalNameSelection.getTransferData(DataFlavor.stringFlavor); System.out.println(obj); } }
java实现复制剪切粘贴(面向接口)
功能分析
- 1.复制操作:用户选择要复制的文件路径,然后程序将复制的文件的文件路径存放到一个临时文件夹中。
- 2.剪切操作:用户选择要剪切的文件路径,然后程序将剪切的文件的路径存放到一个临时文件夹中,再将原文件删除。复制和剪切都放在同一个临时文件夹中。
- 3.粘贴操作:用户选择要粘贴的文件路径,然后程序会从临时文件中将用户文件写入用户要粘贴的文件夹中。如果该文件夹中有同名文件,则询问用户是否替换原文件或跳过该文件。
- 4.进行复制剪切操作时要判断文件是否存在,存在才能进行此操作,否则提示用户文件不存在。
代码实现
1.主页面:
import java.io.IOException; import java.util.Scanner; public class MyMain { public static void main(String[] args) throws Exception { System.out.println("------------------------------"); System.out.println(" 复制粘贴剪切系统"); System.out.println(" 作者:萧萧"); System.out.println(" 版本:v1.0"); System.out.println("------------------------------"); Operation operation = new Operation(); Scanner scanner = new Scanner(System.in); // operation.copy("F:\\javafile\\a.txt"); // operation.paste("F:\\javafile\\paste\\1.txt"); //定义option,这里用char类型,用来判断用户输入的是否是1-4,防止用户输入1-4之外的内容 char option; //do while循环,运行时先执行一遍再判断循环条件 do{ //由用户自主选择要进行的操作 System.out.println("请选择你要执行的操作:"); System.out.println("1.复制 2.剪切 3.粘贴 4.退出"); //定义一个String类型接收用户输入的内容 String myoption = scanner.next(); //将用户输入的内容转换为char类型 option = myoption.toCharArray()[0]; //判断用户的选择,从而实现相对应的操作 switch (option){ case '1': operation.copy();break; //复制操作 case '2': operation.shear();break; //剪切操作 case '3': operation.paste();break; //粘贴操作 case '4': System.out.println("正在退出......");break; //用户输入4则退出 default: System.out.println("你选择的功能编号不正确,请重新选择!"); //如果用户输入1-4之外的内容,则提示重新输入 } }while (option != '4'); } }
2.功能实现页面:
import java.io.*; import java.util.Locale; import java.util.Scanner; public class Operation implements Function{ public Operation() { } //复制和剪切功能的写入操作 @Override public void save(String path) throws Exception{ //字符读取,这里的path是要复制和剪切的路径 FileReader fileReader = new FileReader(path); //字符输出,复制和剪切后的路径都存在一个临时文件夹temp中 FileWriter fileWriter = new FileWriter("F:\\javafile\\temp\\1.txt"); BufferedReader bu_read = new BufferedReader(fileReader); BufferedWriter bu_write = new BufferedWriter(fileWriter); //定义变量line,接收每一行的数据 String line; //判断文件中的每一行是否为空,不为空则继续循环,为空就是没有字符了,退出循环 while ((line=bu_read.readLine())!=null){ //写入 bu_write.write(line); //换行 bu_write.write("\n"); } //关闭文件 bu_read.close(); bu_write.close(); } //粘贴功能的写入操作 @Override public void paste_file(String path) throws IOException { //字符读取,因为复制和粘贴后的文件路径都存放在了temp中,所以要将其内容粘贴,直接读取temp中的文件 FileReader fileReader = new FileReader("F:\\javafile\\temp\\1.txt"); //字符输出,这里的path是要粘贴的路径 FileWriter fileWriter = new FileWriter(path); BufferedReader bu_read = new BufferedReader(fileReader); BufferedWriter bu_write = new BufferedWriter(fileWriter); //定义变量line,接收每一行的数据 String line; //判断文件中的每一行是否为空,不为空则继续循环,为空就是没有字符了,退出循环 while ((line=bu_read.readLine())!=null){ //写入 bu_write.write(line); //换行 bu_write.write("\n"); } //关闭文件 bu_read.close(); bu_write.close(); } //复制文件操作 @Override public void copy() throws Exception { Scanner scanner = new Scanner(System.in); //由用户选择复制的文件路径 System.out.println("你要复制的文件路径:"); String path = scanner.next(); //定义myfile File myfile = new File(path); try{ //判断文件是否在文件夹中存在,如果存在,则可以将这个文件复制下来 myfile.exists(); //调用复制和剪切功能的写入操作的这个函数 this.save(path); }catch (Exception e){ //不存在则抛出 文件不存在 System.out.println("文件不存在!"); } } //剪切文件操作 @Override public void shear() throws Exception{ Scanner scanner = new Scanner(System.in); //由用户选择剪切的文件路径 System.out.println("你要剪贴的文件路径:"); String path = scanner.next(); //定义myfile File myfile = new File(path); try{ //判断文件是否在文件夹中存在,如果存在,则可以将这个文件剪切下来 myfile.exists(); //调用复制和剪切功能的写入操作的这个函数 this.save(path); //文件剪切之后,文件夹就没有这个文件了,所以进行删除操作,而剪切的文件路径已经存放进缓存了 //注意:必须要先把文件关闭了才能删除文件 myfile.delete(); }catch (Exception e){ //不存在则抛出 文件不存在 System.out.println("文件不存在!"); } } //粘贴文件操作 @Override public void paste() throws Exception{ Scanner scanner = new Scanner(System.in); //由用户选择粘贴的文件路径 System.out.println("你要粘贴到的文件的路径:"); String path = scanner.next(); //定义myfile File myfile = new File(path); //当我们将一个文件复制到一个文件夹中时,如果存在同名的文件,会进行询问 替换源文件还是跳过 //所以判断,如果文件存在 if(myfile.exists()){ //弹出提示 System.out.println("目标已包含一个名为" + myfile.getName() + "的文件"); //用户选择替换原文件还是跳过 System.out.println("替换目标中的文件(R)"); System.out.println("跳过该文件(S)"); //接收用户的选择 String option = scanner.next().toUpperCase(); switch (option) { case "R": //用户选择R,则替换掉原来的文件,将新的内容写进文件 paste_file(path); break; case "S": //用户选择S,则跳过文件,新文件内容不写入文件中,直接break break; } }else { //如果不存在同名的文件,则直接写入 paste_file(path); } } }
3.功能实现的接口:
import java.io.IOException; public interface Function { //复制功能 public void copy() throws Exception; //剪切功能 public void shear() throws Exception; //复制和剪切功能的写入操作 public void save(String path) throws Exception; //粘贴功能 public void paste() throws Exception; //粘贴功能的写入操作 public void paste_file(String path) throws IOException; }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。