使用Java如何將文本復制到剪貼板
更新時間:2024年05月31日 09:19:52 作者:Fy哥
這篇文章主要介紹了使用Java如何將文本復制到剪貼板問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
Java將文本復制到剪貼板
關鍵代碼
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Clipboard類的2個主要方法:
setContents(Transferable contents, ClipboardOwner owner) getContents(Object requestor)
Clipboard類:實現(xiàn)使用剪切/復制/粘貼操作傳輸數(shù)據(jù)的機制的類

代碼示例(僅供參考)
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();
//實現(xiàn)復制功能:將當前程序中的字符串復制到剪貼板中去
// clipboard.setContents(canonicalNameSelection, null);
canonicalNameSelection = clipboard.getContents(null);
//獲取剪貼板上的內(nèi)容
Object obj = canonicalNameSelection.getTransferData(DataFlavor.stringFlavor);
System.out.println(obj);
}
}
java實現(xiàn)復制剪切粘貼(面向接口)
功能分析
- 1.復制操作:用戶選擇要復制的文件路徑,然后程序?qū)椭频奈募奈募窂酱娣诺揭粋€臨時文件夾中。
- 2.剪切操作:用戶選擇要剪切的文件路徑,然后程序?qū)⒓羟械奈募穆窂酱娣诺揭粋€臨時文件夾中,再將原文件刪除。復制和剪切都放在同一個臨時文件夾中。
- 3.粘貼操作:用戶選擇要粘貼的文件路徑,然后程序會從臨時文件中將用戶文件寫入用戶要粘貼的文件夾中。如果該文件夾中有同名文件,則詢問用戶是否替換原文件或跳過該文件。
- 4.進行復制剪切操作時要判斷文件是否存在,存在才能進行此操作,否則提示用戶文件不存在。
代碼實現(xiàn)
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(" 復制粘貼剪切系統(tǒng)");
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之外的內(nèi)容
char option;
//do while循環(huán),運行時先執(zhí)行一遍再判斷循環(huán)條件
do{
//由用戶自主選擇要進行的操作
System.out.println("請選擇你要執(zhí)行的操作:");
System.out.println("1.復制 2.剪切 3.粘貼 4.退出");
//定義一個String類型接收用戶輸入的內(nèi)容
String myoption = scanner.next();
//將用戶輸入的內(nèi)容轉(zhuǎn)換為char類型
option = myoption.toCharArray()[0];
//判斷用戶的選擇,從而實現(xiàn)相對應的操作
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之外的內(nèi)容,則提示重新輸入
}
}while (option != '4');
}
}2.功能實現(xiàn)頁面:
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,接收每一行的數(shù)據(jù)
String line;
//判斷文件中的每一行是否為空,不為空則繼續(xù)循環(huán),為空就是沒有字符了,退出循環(huán)
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中,所以要將其內(nèi)容粘貼,直接讀取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,接收每一行的數(shù)據(jù)
String line;
//判斷文件中的每一行是否為空,不為空則繼續(xù)循環(huán),為空就是沒有字符了,退出循環(huán)
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();
//調(diào)用復制和剪切功能的寫入操作的這個函數(shù)
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();
//調(diào)用復制和剪切功能的寫入操作的這個函數(shù)
this.save(path);
//文件剪切之后,文件夾就沒有這個文件了,所以進行刪除操作,而剪切的文件路徑已經(jīng)存放進緩存了
//注意:必須要先把文件關閉了才能刪除文件
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,則替換掉原來的文件,將新的內(nèi)容寫進文件
paste_file(path);
break;
case "S":
//用戶選擇S,則跳過文件,新文件內(nèi)容不寫入文件中,直接break
break;
}
}else {
//如果不存在同名的文件,則直接寫入
paste_file(path);
}
}
}3.功能實現(xiàn)的接口:
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;
}總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java程序的初始化順序,static{}靜態(tài)代碼塊和實例語句塊的使用方式
這篇文章主要介紹了Java程序的初始化順序,static{}靜態(tài)代碼塊和實例語句塊的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01
基于@ConfigurationProperties的三種用法及說明
SpringBoot配置屬性綁定詳解,介紹@Component若您配置類、@ConfigurationProperties綁定屬性及三種常見應用場景,附帶代碼示例與測試步驟2026-06-06

