java 把本地地址转义成地址字符串

来源:互联网 发布:p2p网络借贷公司注册 编辑:程序博客网 时间:2024/06/06 21:45

java中如果要调用进入本地的目录可以到文件资源管理器中拷贝出地址,例如:

C:\Users\Administrator\Desktop\学习7\单片机
对于上面的地址,我把他转换成字符串来使用

如下:

String path="C:\Users\Administrator\Desktop\学习7\单片机";
但是这样当然不行的,字符串里的反斜杠要转义

也就是要写成

String path="C:\\Users\\Administrator\\Desktop\\学习7\\单片机";
但是要一个一个的加反斜杠是很烦的。那怎么办,那就代码实现呗。

package myTool;import java.awt.Toolkit;import java.awt.datatransfer.Clipboard;import java.awt.datatransfer.StringSelection;import java.util.Scanner;public class StringToPath{static Scanner scanner=new Scanner(System.in);public static void main(String[] args){String string=scanner.next();//计算本地地址中的'\'个数int count=0;for(int i=0;i<string.length();i++){if(string.charAt(i)=='\\')count++;}//计算转义之后的地址字符串的长度int length=string.length();length=length+count;//生成辅助字符数组char[] chars=new char[length];//把字符串地址转换成字符输出char[] strCh=string.toCharArray();//把字符数组地址拷贝到转义后的字符的地址数组charsint i=chars.length-1;int j=strCh.length-1;//遍历整个地址字符数组strChwhile(j>=0){//如果是其他字符,则直接拷贝if(strCh[j]!='\\'){chars[i]=strCh[j];//复制字符串//System.out.println("strCh["+j+"]="+strCh[j]);}//如果遇到字符'\',就在这个字符之后多加一个字符'\',也就是把这个字符转义else{chars[i]='\\';i--;chars[i]=strCh[j];}j--;i--;}//输出到屏幕String filePath=String.valueOf(chars);System.out.println(filePath);//写入系统剪贴板setSystemClipboard(filePath);//暂停5秒try{Thread.sleep(5000);// 暂停5秒后程序继续执行} catch (InterruptedException e){// TODO Auto-generated catch blocke.printStackTrace();}}//向系统剪贴板写入字符串public static void setSystemClipboard(String refContent){   //设置为static是为了直接使用,不用new一个该类的实例即可直接使用,即定义的: 类名.方法名      String vc = refContent.trim();      StringSelection ss = new StringSelection(vc);            Clipboard sysClb=null;      //获取系统剪贴板    sysClb = Toolkit.getDefaultToolkit().getSystemClipboard();      sysClb.setContents(ss,null);         }  }
上面的代码执行之后,会把转义之后的地址,拷贝一份到系统的剪贴板。其他代码中需要使用时只需要直接粘贴就行了。

然后打成可执行的jar包之后,以后就可以直接鼠标点击直接运行。

当然,上门用char数组来实现显得太复杂了,直接使用StringBuffer来拼接比较方便

改进后的代码:

package myTool;import java.awt.Toolkit;import java.awt.datatransfer.Clipboard;import java.awt.datatransfer.StringSelection;import java.util.Scanner;public class StringToPath2{static Scanner scanner=new Scanner(System.in); public static void main(String[] args){System.out.print("输入要转义的地址:");String string=scanner.nextLine();StringBuffer stringBuffer=new StringBuffer();for(int i=0;i<string.length();i++){//其他字符照样拷贝stringBuffer.append(string.charAt(i));//如果遇到地址分隔符,就多加一个分隔符if(string.charAt(i)=='\\')stringBuffer.append('\\');}System.out.println(stringBuffer.toString());setSystemClipboard(stringBuffer.toString());System.out.println("结果已经写入剪贴板!");}static void setSystemClipboard(String text){String vc = text.trim();StringSelection ss = new StringSelection(vc);//获取系统剪贴板Clipboard sysClb = null;sysClb=Toolkit.getDefaultToolkit().getSystemClipboard();//写入数据sysClb.setContents(ss, null);}}


运行结果:



原创粉丝点击