java操作剪切板,java寫入剪切板

本文目錄一覽:

Java 里用什麼代碼可以把一個 String 的內容複製到 Windows 剪切板?

java 中的剪切板

通過操作系統的剪切板,可以實現在不同的程序中拷貝和粘貼數據。一些用Java寫的程序例如很多開發環境也可以訪問到剪切板,本文就是研究如何在Java程序中讀寫系統剪切板的數據。

Java中使用java.awt.datatransfer.Clipboard類來描述剪切板,並把剪切板分為兩種類型:本地和系統,本地剪切板使用 Clipborad cp = new Clipboard(“clip1”); 來構造;系統剪切板通過

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

獲取,下面我們給出幾個常用的方法用於讀寫剪切板中的文本數據以及圖像數據

1. 從指定的剪切板中獲取文本內容

protected static String getClipboardText(Clipboard clip) throws Exception{

// 獲取剪切板中的內容

Transferable clipT = clip.getContents(null);

if (clipT != null) {

// 檢查內容是否是文本類型

if (clipT.isDataFlavorSupported(DataFlavor.stringFlavor))

return (String)clipT.getTransferData(DataFlavor.stringFlavor);

}

return null;

}

2. 往剪切板寫文本數據

protected static void setClipboardText(Clipboard clip, String writeMe) {

Transferable tText = new StringSelection(writeMe);

clip.setContents(tText, null);

}

3. 從剪切板讀取圖像

public static Image getImageFromClipboard() throws Exception{

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

Transferable cc = sysc.getContents(null);

if (cc == null)

return null;

else if(cc.isDataFlavorSupported(DataFlavor.imageFlavor))

return (Image)cc.getTransferData(DataFlavor.imageFlavor);

return null;

}

4. 寫圖像到剪切板

protected static void setClipboardImage2(final Image image) {

Transferable trans = new Transferable(){

public DataFlavor[] getTransferDataFlavors() {

return new DataFlavor[] { DataFlavor.imageFlavor };

}

public boolean isDataFlavorSupported(DataFlavor flavor) {

return DataFlavor.imageFlavor.equals(flavor);

}

public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {

if(isDataFlavorSupported(flavor))

return image;

throw new UnsupportedFlavorException(flavor);

}

};

Toolkit.getDefaultToolkit().getSystemClipboard().setContents(trans, null);

}

有了這四個方法,你下面可以自己寫一些程序來進行測試,利用它來實現與其他程序結合測試對剪切板數據的操作。這裡給出一個用於顯示圖像的類,只要把Image實例作為參數傳入即可。

/*

* Created on 2004-12-23

* 查看圖形的窗口

*/

package javayou.clipboard;

import java.awt.Frame;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.MediaTracker;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

/**

* @author Winter Lau 用於顯示圖形的窗口

*/

public class ImageViewer extends Frame {

private Image image;

/**

* 顯示一個圖像

* @param viewMe

*/

public ImageViewer(Image viewMe) {

image = viewMe;

MediaTracker mediaTracker = new MediaTracker(this);

mediaTracker.addImage(image, 0);

try {

mediaTracker.waitForID(0);

} catch (InterruptedException ie) {

ie.printStackTrace();

System.exit(1);

}

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

//窗口適應圖像大小

setSize(image.getWidth(null), image.getHeight(null));

//窗口標題

setTitle(“Viewing Image from Clipboard”);

setVisible(true);

}

public void paint(Graphics graphics) {

graphics.drawImage(image, 0, 0, null);

}

/**

* 用於讀取圖像文件並生成Image對象

*/

public static Image getImageFromFile(String fileName) {

Toolkit toolkit = Toolkit.getDefaultToolkit();

Image image = toolkit.getImage(fileName);

return image;

}

}

java將一個文件複製到剪切板

首先要明白 「剪切板」 裡面能放什麼內容。 剪切板只能放 「文本內容」或者「文件路徑」, 如果你選中文字,然後複製,那麼放在剪切板就是文字內容;如果你選擇一個文件,複製,那放在剪切板裡面是 文件的路徑。

你說的 文件複製到剪切板 是不合理的。

Java 通過 java.awt.datatransfer.Clipboard 訪問剪切板。

咋用JAVAspirit吧特定內容複製到剪切板

可以通過BufferedReader 流的形式進行流讀取,之後通過readLine方法獲取到每行的內容,之後通過bufferedwriter (如:OutputStreamWriter)。

BufferedReader bre = null;

OutputStreamWriter pw = null;//定義一個流

try {

String file = “D:/test/test.txt”;

bre = new BufferedReader(new FileReader(file));//此時獲取到的bre就是整個文件的緩存流

pw = new OutputStreamWriter(new FileOutputStream(「D:/test.txt」),”GBK”);//確認流的輸出文件和編碼格式,此過程創建了「test.txt」實例

while ((str = bre.readLine())!= null) // 判斷最後一行不存在,為空結束循環

{

pw.write(str );//將要寫入文件的內容,寫入到新文件

};

pw.close();//關閉流

bre .close();//關閉流

備註:文件流用完之後必須及時通過close方法關閉,否則會一直處於打開狀態,直至程序停止,增加系統負擔。

原創文章,作者:AACN,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/145170.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
AACN的頭像AACN
上一篇 2024-10-26 11:55
下一篇 2024-10-26 11:55

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Python棧操作用法介紹

    如果你是一位Python開發工程師,那麼你必須掌握Python中的棧操作。在Python中,棧是一個容器,提供後進先出(LIFO)的原則。這篇文章將通過多個方面詳細地闡述Pytho…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29

發表回復

登錄後才能評論