欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

關(guān)鍵代碼

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

Clipboard類的2個(gè)主要方法:

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

代碼實(shí)現(xiàn)

1.主頁(yè)面:

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)行時(shí)先執(zhí)行一遍再判斷循環(huán)條件
        do{
            //由用戶自主選擇要進(jìn)行的操作
            System.out.println("請(qǐng)選擇你要執(zhí)行的操作:");
            System.out.println("1.復(fù)制   2.剪切   3.粘貼   4.退出");
            //定義一個(gè)String類型接收用戶輸入的內(nèi)容
            String myoption = scanner.next();
            //將用戶輸入的內(nèi)容轉(zhuǎn)換為char類型
            option = myoption.toCharArray()[0];
            //判斷用戶的選擇,從而實(shí)現(xiàn)相對(duì)應(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("你選擇的功能編號(hào)不正確,請(qǐng)重新選擇!");  //如果用戶輸入1-4之外的內(nèi)容,則提示重新輸入
            }
        }while (option != '4');
 
    }
}

2.功能實(shí)現(xiàn)頁(yè)面:

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ù)制和剪切后的路徑都存在一個(gè)臨時(shí)文件夾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{
            //判斷文件是否在文件夾中存在,如果存在,則可以將這個(gè)文件復(fù)制下來
            myfile.exists();
            //調(diào)用復(fù)制和剪切功能的寫入操作的這個(gè)函數(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{
            //判斷文件是否在文件夾中存在,如果存在,則可以將這個(gè)文件剪切下來
            myfile.exists();
            //調(diào)用復(fù)制和剪切功能的寫入操作的這個(gè)函數(shù)
            this.save(path);
            //文件剪切之后,文件夾就沒有這個(gè)文件了,所以進(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)我們將一個(gè)文件復(fù)制到一個(gè)文件夾中時(shí),如果存在同名的文件,會(huì)進(jìn)行詢問  替換源文件還是跳過
        //所以判斷,如果文件存在
        if(myfile.exists()){
            //彈出提示
            System.out.println("目標(biāo)已包含一個(gè)名為" + 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é)

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

相關(guān)文章

  • springboot使用redis實(shí)現(xiàn)從配置到實(shí)戰(zhàn)

    springboot使用redis實(shí)現(xiàn)從配置到實(shí)戰(zhàn)

    本文主要介紹了springboot使用redis ,采用的是RedisTemplate的形式,還有一種采用spring支持的注解進(jìn)行訪問緩存,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • JSON反序列化Long變Integer或Double的問題及解決

    JSON反序列化Long變Integer或Double的問題及解決

    這篇文章主要介紹了JSON反序列化Long變Integer或Double的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Spring占位符Placeholder的實(shí)現(xiàn)原理解析

    Spring占位符Placeholder的實(shí)現(xiàn)原理解析

    這篇文章主要介紹了Spring占位符Placeholder的實(shí)現(xiàn)原理,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Java中拷貝list數(shù)組幾種常見的方法

    Java中拷貝list數(shù)組幾種常見的方法

    這篇文章主要給大家介紹了關(guān)于Java中拷貝list數(shù)組幾種常見的方法,在Java中,List是一個(gè)接口,它有多個(gè)實(shí)現(xiàn)類,如ArrayList、LinkedList等,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • java實(shí)現(xiàn)的2048游戲完整實(shí)例

    java實(shí)現(xiàn)的2048游戲完整實(shí)例

    這篇文章主要介紹了java實(shí)現(xiàn)的2048游戲,結(jié)合完整實(shí)例形式分析了java實(shí)現(xiàn)2048游戲功能的相關(guān)數(shù)值運(yùn)算、swing組件布局、事件響應(yīng)等相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • 10個(gè)避免Java內(nèi)存泄露的最佳實(shí)踐分享

    10個(gè)避免Java內(nèi)存泄露的最佳實(shí)踐分享

    即使有垃圾回收器的幫助,Java應(yīng)用程序仍然可能遭遇內(nèi)存泄漏問題,本文將介紹10個(gè)避免Java內(nèi)存泄漏的最佳實(shí)踐,大家可以根據(jù)需求自己進(jìn)行選擇
    2025-04-04
  • Java數(shù)據(jù)結(jié)構(gòu)之鏈表、棧、隊(duì)列、樹的實(shí)現(xiàn)方法示例

    Java數(shù)據(jù)結(jié)構(gòu)之鏈表、棧、隊(duì)列、樹的實(shí)現(xiàn)方法示例

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之鏈表、棧、隊(duì)列、樹的實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Java數(shù)據(jù)結(jié)構(gòu)中鏈表、棧、隊(duì)列、樹的功能、定義及使用方法,需要的朋友可以參考下
    2019-03-03
  • Spring?JPA?deleteInBatch導(dǎo)致StackOverflow問題

    Spring?JPA?deleteInBatch導(dǎo)致StackOverflow問題

    這篇文章主要介紹了Spring?JPA?deleteInBatch導(dǎo)致StackOverflow問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 解決maven啟動(dòng)Spring項(xiàng)目報(bào)錯(cuò)的問題

    解決maven啟動(dòng)Spring項(xiàng)目報(bào)錯(cuò)的問題

    下面小編就為大家分享一篇解決maven啟動(dòng)Spring項(xiàng)目報(bào)錯(cuò)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • Java線程的聯(lián)合用法實(shí)例分析

    Java線程的聯(lián)合用法實(shí)例分析

    這篇文章主要介紹了Java線程的聯(lián)合用法,結(jié)合實(shí)例形式分析了java線程聯(lián)合的原理、實(shí)現(xiàn)方法及相關(guān)操作技巧,需要的朋友可以參考下
    2019-10-10

最新評(píng)論