C:\Documents and Settings\桌面cs1.jpg,这是标准的windows路径,在java里怎么会报错?

解决方案 »

  1.   

    用正则的替换方法:
    String.replaceAll("\\", "/");不过如果你不用char数组分分合合,直接用对象传递那个路径变量,应该是不会出错的;
    或者出错的原因是因为中文变成乱码了,造成解析错误。
      

  2.   


    我是想吧
    path中的\替换成"/"或"\"
      

  3.   

    用s=s.replace("\\", "/");就可以替换了!\是转义字符,你写成"\\"就可以了
      

  4.   

    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("\\", "/");
    程序就正常了
      

  5.   

    最后发现 只能用REPLACE
    而不是REPLACEALL
      

  6.   

    怎么可能。
     String replace(CharSequence target, CharSequence replacement) 
              使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。 
     String replaceAll(String regex, String replacement) 
              使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。 
    是你的正则表达式写错了
      

  7.   

    嗯,开始那个表达式有误;因为\在java里面是转义符,所以replaceAll("\\","/")里面的\\只是一个\,同时,在正则中\也是转义符,所以如果要用正则来匹配\,也必须要用\\;综上,最后的方法应该是replaceAll("\\\\","/")。
    replace是简单的字符串替换,它的第一个参数是字符串,所以\\不会出错,但只会被替换一次。