JAVA路径问题

JM1989120 2010-01-22 05:31:01
大家都知道在JAVA中
类似 ImageIcon in=new ImageIcon("C:/Documents and Settings/桌面/cs1.jpg");中的地址才是可以使用的
但我们用getPath()等IO下的获得地址的方法只能获得C:\Documents and Settings\桌面cs1.jpg这样的地址
但是这样的地址在JAVA里是会报错的

我写了个小程序要可以查看全盘的图片,所以说把图片放在工程目录下的这种做法是不可能的.

我想动态的获得电脑中某个图片的地址

并为之创建一个ImageIcon对象

求助各位大虾
怎么把有"\"的路径变为有"/"的路径?

我的思路是 用一个CHAR数组 存放path
然后把\变为/
最后把数组合为一个string对象
但是觉得这样很麻烦
...全文
172 9 打赏 收藏 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
windgh 2010-01-22
  • 打赏
  • 举报
回复
嗯,开始那个表达式有误;因为\在java里面是转义符,所以replaceAll("\\","/")里面的\\只是一个\,同时,在正则中\也是转义符,所以如果要用正则来匹配\,也必须要用\\;综上,最后的方法应该是replaceAll("\\\\","/")。
replace是简单的字符串替换,它的第一个参数是字符串,所以\\不会出错,但只会被替换一次。
py330316117 2010-01-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 jm1989120 的回复:]
最后发现 只能用REPLACE
而不是REPLACEALL
[/Quote]
怎么可能。
String replace(CharSequence target, CharSequence replacement)
使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。
String replaceAll(String regex, String replacement)
使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
是你的正则表达式写错了
JM1989120 2010-01-22
  • 打赏
  • 举报
回复
最后发现 只能用REPLACE
而不是REPLACEALL
JM1989120 2010-01-22
  • 打赏
  • 举报
回复
int result=fileChooser.showOpenDialog(item1);
if(result==JFileChooser.APPROVE_OPTION)
{
File file=fileChooser.getSelectedFile();
DateFormat rq=
DateFormat.getDateInstance(DateFormat.DEFAULT,Locale.CHINA);

Date date1=new Date();
String d1=rq.format(date1);

DateFormat sj1=
DateFormat.getTimeInstance(DateFormat.DEFAULT,Locale.CHINA);
String t1=sj1.format(date1);
String s=file.getAbsolutePath();
s=s.replaceAll("\\", "/");
System.out.print(s);

}

运行后报错
Exception in thread "AWT-EventQueue-0" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\
^
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.<init>(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.lang.String.replaceAll(Unknown Source)
at dip.DIP$JMenuItem1_actionAdapter.actionPerformed(DIP.java:210)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
————————————————————
但是去掉s=s.replaceAll("\\", "/");
程序就正常了
Forrest23 2010-01-22
  • 打赏
  • 举报
回复
用s=s.replace("\\", "/");就可以替换了!\是转义字符,你写成"\\"就可以了
JM1989120 2010-01-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 windgh 的回复:]
用正则的替换方法:
String.replaceAll("\\", "/");

不过如果你不用char数组分分合合,直接用对象传递那个路径变量,应该是不会出错的;
或者出错的原因是因为中文变成乱码了,造成解析错误。
[/Quote]

我是想吧
path中的\替换成"/"或"\"
windgh 2010-01-22
  • 打赏
  • 举报
回复
用正则的替换方法:
String.replaceAll("\\", "/");

不过如果你不用char数组分分合合,直接用对象传递那个路径变量,应该是不会出错的;
或者出错的原因是因为中文变成乱码了,造成解析错误。
yuzuru 2010-01-22
  • 打赏
  • 举报
回复
C:\Documents and Settings\桌面cs1.jpg,这是标准的windows路径,在java里怎么会报错?
wuyongai0563 2010-01-22
  • 打赏
  • 举报
回复
用 正则 替换啊 这么经典的正则用法

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧