右键保存剪贴板数据
右鍵保存剪貼板數據
這個小工具是由程序員小山與Bug的視頻啟發,加上一直以來為保存剪切板中的數據苦惱不已,通常都是為了保存這些數據不得不進行繁瑣的操作。
-
為了保存一段文字,需要將這段文字復制后手動創建一個txt文件,使用記事本、文本編輯器等打開這個文件,將文字粘貼進去再保存。
-
為了保存一張截圖、一張瀏覽器上的圖片,需要打開畫圖、QQ、微信等粘貼、發送后再另存為本地磁盤文件。
主要技能:
- Java(可以換成自己熟悉的)
- exe4J —— Java打包工具
- 注冊表編輯器
實現效果
已編譯好的可執行exe文件,「SaveClipboardApplication.exe」https://www.aliyundrive.com/s/h6Z78nsJpoo 提取碼: 0qk1
- 保存圖像和截圖
- 保存文本
實現
Java 編碼
package cn.fanchencloud;import javax.imageio.ImageIO; import java.awt.*; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.image.RenderedImage; import java.io.*;/*** @author chen*/ public class SaveClipboardApplication {public static void main(String[] args) throws IOException {for (String arg : args) {if (null != arg) {if (isDirectory(new File(arg))) {// 獲取剪切板信息Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();Transferable transferable = clipboard.getContents(null);if (null != transferable) {// 文本類型數據if (transferable.isDataFlavorSupported(DataFlavor.stringFlavor)) {String text = null;try {text = (String) transferable.getTransferData(DataFlavor.stringFlavor);} catch (UnsupportedFlavorException | IOException e) {e.printStackTrace();}if (null != text) {String filename = text.length() > 8 ? text.substring(0, 8) : text;filename = filename.replace("?", "");filename = filename.replace("*", "");filename = filename.replace("/", "");filename = filename.replace("\\", "");filename = filename.replace("<", "");filename = filename.replace(">", "");filename = filename.replace(":", "");filename = filename.replace("\"", "");filename = filename.replace("|", "");File textFile = new File(arg + File.separator + filename + ".txt");if (textFile.exists()) {} else {// 不存在則創建try {// 不存在則創建if (!textFile.createNewFile()) {System.exit(0);}} catch (IOException e) {e.printStackTrace();}}// true,則追加寫入text文本BufferedWriter bufferedWriter = null;try {bufferedWriter = new BufferedWriter(new FileWriter(textFile, true));} catch (IOException e) {e.printStackTrace();}if (bufferedWriter != null) {bufferedWriter.write(text);//換行bufferedWriter.write("\r\n");bufferedWriter.flush();bufferedWriter.close();}}}// 圖片類型else if (transferable.isDataFlavorSupported(DataFlavor.imageFlavor)) {Image image = null;try {image = (Image) transferable.getTransferData(DataFlavor.imageFlavor);} catch (UnsupportedFlavorException | IOException e) {e.printStackTrace();}if (image != null) {// 獲取時間戳long timeMillis = System.currentTimeMillis();try {ImageIO.write((RenderedImage) image, "JPEG", new FileOutputStream(arg + File.separator + timeMillis + ".jpg"));} catch (IOException e) {e.printStackTrace();}}}}}}}}private static boolean isDirectory(File file) {return null != file && file.isDirectory();} }打包Java項目
由于項目是使用SpringBoot作為基礎模板創建工程的(僅使用打包插件),程序中僅使用可打包插件。
使用maven打包工程:
mvn clean package -DskipTests=trueexe4j 打包可執行文件
exe4j 下載地址
exe4j 使用 —— 本文使用的是Java程序打包成jar包
注冊表編輯
需要實現的功能是在某一個目錄下右鍵可以出現保存選項,并將數據保存到該目錄
注冊表位置計算機\HKEY_CLASSES_ROOT\Directory\Background\shell\SaveClipboard_here,其中SaveClipboard_here是右鍵名
"D:\tools\SaveClipboardApplication.exe" "%V"總結
- 上一篇: 剑指 Offer II 014. 字符串
- 下一篇: ie 访问 java接口_Java基础面