最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Java如何將文本復(fù)制到剪貼板

 更新時間:2024年05月31日 09:19:52   作者:Fy哥  
這篇文章主要介紹了使用Java如何將文本復(fù)制到剪貼板問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Java將文本復(fù)制到剪貼板

關(guān)鍵代碼

Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();

Clipboard類的2個主要方法:

setContents(Transferable contents, ClipboardOwner owner)
getContents(Object requestor)

Clipboard類:實(shí)現(xiàn)使用剪切/復(fù)制/粘貼操作傳輸數(shù)據(jù)的機(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();
 
		//實(shí)現(xiàn)復(fù)制功能:將當(dāng)前程序中的字符串復(fù)制到剪貼板中去
//		clipboard.setContents(canonicalNameSelection, null);
 
		canonicalNameSelection = clipboard.getContents(null);
		
		//獲取剪貼板上的內(nèi)容
		Object obj =  canonicalNameSelection.getTransferData(DataFlavor.stringFlavor);
 
		System.out.println(obj);
	}
}

java實(shí)現(xiàn)復(fù)制剪切粘貼(面向接口)

功能分析

  • 1.復(fù)制操作:用戶選擇要復(fù)制的文件路徑,然后程序?qū)?fù)制的文件的文件路徑存放到一個臨時文件夾中。
  • 2.剪切操作:用戶選擇要剪切的文件路徑,然后程序?qū)⒓羟械奈募穆窂酱娣诺揭粋€臨時文件夾中,再將原文件刪除。復(fù)制和剪切都放在同一個臨時文件夾中。
  • 3.粘貼操作:用戶選擇要粘貼的文件路徑,然后程序會從臨時文件中將用戶文件寫入用戶要粘貼的文件夾中。如果該文件夾中有同名文件,則詢問用戶是否替換原文件或跳過該文件。
  • 4.進(jìn)行復(fù)制剪切操作時要判斷文件是否存在,存在才能進(jìn)行此操作,否則提示用戶文件不存在。

代碼實(shí)現(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("           復(fù)制粘貼剪切系統(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),運(yùn)行時先執(zhí)行一遍再判斷循環(huán)條件
        do{
            //由用戶自主選擇要進(jìn)行的操作
            System.out.println("請選擇你要執(zhí)行的操作:");
            System.out.println("1.復(fù)制   2.剪切   3.粘貼   4.退出");
            //定義一個String類型接收用戶輸入的內(nèi)容
            String myoption = scanner.next();
            //將用戶輸入的內(nèi)容轉(zhuǎn)換為char類型
            option = myoption.toCharArray()[0];
            //判斷用戶的選擇,從而實(shí)現(xiàn)相對應(yīng)的操作
            switch (option){
                case '1': operation.copy();break;  //復(fù)制操作
                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.功能實(shí)現(xiàn)頁面:

import java.io.*;
import java.util.Locale;
import java.util.Scanner;
 
public class Operation implements Function{
    public Operation() {
    }
 
    //復(fù)制和剪切功能的寫入操作
    @Override
    public void save(String path) throws Exception{
        //字符讀取,這里的path是要復(fù)制和剪切的路徑
        FileReader fileReader = new FileReader(path);
        //字符輸出,復(fù)制和剪切后的路徑都存在一個臨時文件夾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");
        }
        //關(guān)閉文件
        bu_read.close();
        bu_write.close();
    }
 
    //粘貼功能的寫入操作
    @Override
    public void paste_file(String path) throws IOException {
        //字符讀取,因?yàn)閺?fù)制和粘貼后的文件路徑都存放在了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");
        }
        //關(guān)閉文件
        bu_read.close();
        bu_write.close();
    }
 
    //復(fù)制文件操作
    @Override
    public void copy() throws Exception {
        Scanner scanner = new Scanner(System.in);
        //由用戶選擇復(fù)制的文件路徑
        System.out.println("你要復(fù)制的文件路徑:");
        String path = scanner.next();
        //定義myfile
        File myfile = new File(path);
        try{
            //判斷文件是否在文件夾中存在,如果存在,則可以將這個文件復(fù)制下來
            myfile.exists();
            //調(diào)用復(fù)制和剪切功能的寫入操作的這個函數(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)用復(fù)制和剪切功能的寫入操作的這個函數(shù)
            this.save(path);
            //文件剪切之后,文件夾就沒有這個文件了,所以進(jìn)行刪除操作,而剪切的文件路徑已經(jīng)存放進(jìn)緩存了
            //注意:必須要先把文件關(guān)閉了才能刪除文件
            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);
        //當(dāng)我們將一個文件復(fù)制到一個文件夾中時,如果存在同名的文件,會進(jìn)行詢問  替換源文件還是跳過
        //所以判斷,如果文件存在
        if(myfile.exists()){
            //彈出提示
            System.out.println("目標(biāo)已包含一個名為" + myfile.getName() + "的文件");
            //用戶選擇替換原文件還是跳過
            System.out.println("替換目標(biāo)中的文件(R)");
            System.out.println("跳過該文件(S)");
            //接收用戶的選擇
            String option = scanner.next().toUpperCase();
            switch (option) {
                case "R":
                    //用戶選擇R,則替換掉原來的文件,將新的內(nèi)容寫進(jìn)文件
                    paste_file(path);
                    break;
                case "S":
                    //用戶選擇S,則跳過文件,新文件內(nèi)容不寫入文件中,直接break
                    break;
            }
        }else {
            //如果不存在同名的文件,則直接寫入
            paste_file(path);
        }
 
    }
}

3.功能實(shí)現(xiàn)的接口:

import java.io.IOException;
 
public interface Function {
 
    //復(fù)制功能
    public void copy() throws Exception;
    //剪切功能
    public void shear() throws Exception;
    //復(fù)制和剪切功能的寫入操作
    public void save(String path) throws Exception;
    //粘貼功能
    public void paste() throws Exception;
    //粘貼功能的寫入操作
    public void paste_file(String path) throws IOException;
}

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • Spring+Quartz配置定時任務(wù)實(shí)現(xiàn)代碼

    Spring+Quartz配置定時任務(wù)實(shí)現(xiàn)代碼

    這篇文章主要介紹了Spring+Quartz配置定時任務(wù)實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • Java中的跨域和@CrossOrigin注解的作用詳解

    Java中的跨域和@CrossOrigin注解的作用詳解

    這篇文章主要介紹了Java中的跨域和@CrossOrigin注解的作用詳解,跨域,指的是瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對JavaScript施加的安全限制,需要的朋友可以參考下
    2023-12-12
  • Java程序的初始化順序,static{}靜態(tài)代碼塊和實(shí)例語句塊的使用方式

    Java程序的初始化順序,static{}靜態(tài)代碼塊和實(shí)例語句塊的使用方式

    這篇文章主要介紹了Java程序的初始化順序,static{}靜態(tài)代碼塊和實(shí)例語句塊的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Java設(shè)計模式之java命令模式詳解

    Java設(shè)計模式之java命令模式詳解

    這篇文章主要介紹了Java設(shè)計模式編程中命令模式的使用,在一些處理請求響應(yīng)的場合經(jīng)??梢杂玫矫钅J降木幊趟悸?需要的朋友可以參考下
    2021-09-09
  • java調(diào)用百度的接口獲取起-止位置的距離

    java調(diào)用百度的接口獲取起-止位置的距離

    本文主要介紹了java調(diào)用百度的接口獲取起-止位置的距離,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • java線程池工作隊列飽和策略代碼示例

    java線程池工作隊列飽和策略代碼示例

    這篇文章主要介紹了java線程池工作隊列飽和策略代碼示例,涉及線程池的簡單介紹,工作隊列飽和策略的分析及代碼示例,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • 基于@ConfigurationProperties的三種用法及說明

    基于@ConfigurationProperties的三種用法及說明

    SpringBoot配置屬性綁定詳解,介紹@Component若您配置類、@ConfigurationProperties綁定屬性及三種常見應(yīng)用場景,附帶代碼示例與測試步驟
    2026-06-06
  • SpringBoot中實(shí)現(xiàn)接收文件和對象

    SpringBoot中實(shí)現(xiàn)接收文件和對象

    這篇文章主要介紹了SpringBoot實(shí)現(xiàn)接收文件和對象,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 淺談Java BitSet使用場景和代碼示例

    淺談Java BitSet使用場景和代碼示例

    這篇文章主要介紹了淺談Java BitSet使用場景和代碼示例,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Java虛擬線程(VirtualThread)使用詳解

    Java虛擬線程(VirtualThread)使用詳解

    這篇文章主要介紹了Java虛擬線程(VirtualThread)使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-05-05

最新評論

迁西县| 富宁县| 阿拉善右旗| 汝南县| 五指山市| 安化县| 奉新县| 祁连县| 淮滨县| 怀来县| 新津县| 若尔盖县| 兴义市| 宝山区| 长寿区| 樟树市| 文登市| 托克逊县| 田东县| 霞浦县| 布拖县| 秀山| 桦南县| 武隆县| 万年县| 佛山市| 施秉县| 辽宁省| 皮山县| 三江| 敖汉旗| 巴彦淖尔市| 东山县| 桑植县| 孝昌县| 蒲江县| 卓资县| 昌平区| 观塘区| 瑞丽市| 岳阳县|