package org.clear.file;
import javax.swing.*;
import java.awt.*;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.event.ActionEvent;
import java.io.IOException;
//TIP 要<b>运行</b>代码,请按 <shortcut actionId="Run"/> 或
// 点击装订区域中的 <icon src="AllIcons.Actions.Execute"/> 图标。
public class Main {
public static void main(String[] args) {
// 创建一个新的JFrame窗口
JFrame frame = new JFrame("Always On Top Window");
// 创建一个按钮并添加到窗口中
JButton button = new JButton("净化文件名");
button.addActionListener(new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
// 查看 IntelliJ IDEA 建议如何修正。
clearFileName();
}
});
frame.getContentPane().add(button);
// 设置窗口大小
frame.setSize(50, 80);
// frame.setMinimumSize(new Dimension(300, 200));
// 设置窗口关闭操作
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 将窗口设置为总是置顶
frame.setAlwaysOnTop(true);
// 显示窗口
frame.setVisible(true);
}
private static void clearFileName() {
try {
// 获取系统剪贴板的内容
Transferable transferable = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);
if (transferable != null && transferable.isDataFlavorSupported(DataFlavor.stringFlavor)) {
String clipboardText = (String) transferable.getTransferData(DataFlavor.stringFlavor);
String text = replaceSpecialCharacters(clipboardText);
copyText(text);
System.out.println("剪贴板内容: " + text);
} else {
System.out.println("剪贴板没有文本内容或不支持文本内容");
}
} catch (UnsupportedFlavorException | IOException ex) {
ex.printStackTrace();
}
}
public static String replaceSpecialCharacters(String dirPath) {
/*
* windows下文件名中不能含有:\ / : * ? " < > | 英文的这些字符 ,这里使用"."、"'"进行替换。
* \/:?| 用.替换
* "<> 用'替换
*/
dirPath = dirPath.replaceAll("[/\\\\:*?|]", "");
dirPath = dirPath.replaceAll("[\"<>]", "");
dirPath = dirPath.replace("\n", "");
dirPath = dirPath.replaceAll("[\\\\/:\\*\\?\\\"<>\\|]", "");
dirPath = dirPath.replaceAll("[^\\u0009\\u000a\\u000d\\u0020-\\uD7FF\\uE000-\\uFFFD]", "");
dirPath = dirPath.replaceAll("[\\uD83D\\uFFFD\\uFE0F\\u203C\\u3010\\u3011\\u300A\\u166D\\u200C\\u202A\\u202C\\u2049\\u20E3\\u300B\\u300C\\u3030\\u065F\\u0099\\u0F3A\\u0F3B\\uF610\\uFFFC]", "");
dirPath = dirPath.replaceAll("\\s+", " ");
return dirPath;
}
private static void copyText(String textToCopy) {
// 创建一个 StringSelection 对象,用于封装要设置到剪贴板的文本
StringSelection stringSelection = new StringSelection(textToCopy);
// 获取系统剪贴板
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null);
System.out.println("已将文本 \"" + textToCopy + "\" 设置到剪贴板中.");
}
}
净化文件名
原创
©著作权归作者所有:来自51CTO博客作者痛而不觉的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:双击bat文件查看ip地址
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
java截取文件名 java提取文件名
java截取文件名 java提取文件名
java split 文件路径 System 字符串 正则表达式