剪切就是“copy 原始內(nèi)容--past 到目的位置--delete原來位置的內(nèi)容”,這是一個過程

10年積累的網(wǎng)站設(shè)計制作、成都網(wǎng)站建設(shè)經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有文成免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
java 中的剪切板
通過操作系統(tǒng)的剪切板,可以實現(xiàn)在不同的程序中拷貝和粘貼數(shù)據(jù)。一些用Java寫的程序例如很多開發(fā)環(huán)境也可以訪問到剪切板,本文就是研究如何在Java程序中讀寫系統(tǒng)剪切板的數(shù)據(jù)。
Java中使用java.awt.datatransfer.Clipboard類來描述剪切板,并把剪切板分為兩種類型:本地和系統(tǒng),本地剪切板使用 Clipborad cp = new Clipboard("clip1"); 來構(gòu)造;系統(tǒng)剪切板通過
Clipboard sysc = Toolkit.getDefaultToolkit().getSystemClipboard();
獲取,下面我們給出幾個常用的方法用于讀寫剪切板中的文本數(shù)據(jù)以及圖像數(shù)據(jù)
1. 從指定的剪切板中獲取文本內(nèi)容
protected static String getClipboardText(Clipboard clip) throws Exception{
// 獲取剪切板中的內(nèi)容
Transferable clipT = clip.getContents(null);
if (clipT != null) {
// 檢查內(nèi)容是否是文本類型
if (clipT.isDataFlavorSupported(DataFlavor.stringFlavor))
return (String)clipT.getTransferData(DataFlavor.stringFlavor);
}
return null;
}
2. 往剪切板寫文本數(shù)據(jù)
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);
}
有了這四個方法,你下面可以自己寫一些程序來進(jìn)行測試,利用它來實現(xiàn)與其他程序結(jié)合測試對剪切板數(shù)據(jù)的操作。這里給出一個用于顯示圖像的類,只要把Image實例作為參數(shù)傳入即可。
/*
* 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);
}
});
//窗口適應(yīng)圖像大小
setSize(image.getWidth(null), image.getHeight(null));
//窗口標(biāo)題
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;
}
}
可以通過BufferedReader 流的形式進(jìn)行流讀取,之后通過readLine方法獲取到的內(nèi)容,之后通過if判斷來實現(xiàn)在某些特定位置的內(nèi)容的剪切和移動操作。
舉例:
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");//確認(rèn)流的輸出文件和編碼格式,此過程創(chuàng)建了“test.txt”實例
while ((str = bre.readLine())!= null) // 判斷最后一行不存在,為空結(jié)束循環(huán)
{
if(str.indexOf("排除")0){//判斷是否需要舍棄
pw.write(str);//將要寫入文件的內(nèi)容,可以多次write
}
}
bre.close();//關(guān)閉流
pw.close();//關(guān)閉流
解釋:以上方法是實現(xiàn)的刪除,if中的條件改變下,即可實現(xiàn)其余的功能。
備注:文件流用完之后必須及時通過close方法關(guān)閉,否則會一直處于打開狀態(tài),直至程序停止,增加系統(tǒng)負(fù)擔(dān)。
新聞標(biāo)題:剪切文件代碼java,文件自動剪切轉(zhuǎn)移代碼
瀏覽地址:http://chinadenli.net/article31/dsgghsd.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、網(wǎng)站排名、企業(yè)建站、標(biāo)簽優(yōu)化、ChatGPT、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)