繁体   English   中英

如何使用带有文件夹空间路径的Java更新xml文件?

[英]How to update the xml file using java with folder space path?

String filepath = "C:/UIDriverProject/UIDriverPro/Test Folder/TESTDATA/TEST.dat";
DocumentBuilderFactory docFactory = 
DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse(filepath);

字符串文件路径=“ C:/ UIDriverProject / UIDriverPro / 测试文件夹 /TESTDATA/TEST.dat”;

我正在使用带空格的文件路径 - “测试文件夹” 如果我给文件夹没有空间,它可以正常工作,但有空间,它说的错误消息如下错误消息。

javax.xml.transform.TransformerException:java.io.FileNotFoundException:C:\\ UIDriverProject \\ UIDriverPro \\ Test%20Folder \\ TESTDATA \\ TEST.dat(系统找不到指定的路径),位于org.apache.xalan.transformer.TransformerIdentityImpl。 org.apache.xalan.createformContentHandler(TransformerIdentityImpl.java:297)org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:330)at org.apache.xalan.transformer.TransformerIdentityImpl $ transform $ 0.call(未知源) org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)上的.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)org.codehaus.groovy.runtime.callsite.AbstractCallSite .call(AbstractCallSite.java:133)在helper.click_helper.updateXML(click_helper.groovy:148)在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)在sun.reflect.DelegatingMethodAccessorImpl.i org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)处的java.lang.reflect.Method.invoke(Method.java:498)处的groovy.lang.MetaMethod处的nvoke(DelegatingMethodAccessorImpl.java:43) groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1215)处的.doMethodInvoke(MetaMethod.java:325)在groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.invokeMethod(MetaClassImpl.java:1024)处的groovy.lang.MetaClassImpl.java:1024 java:812)位于groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:144)at com.kms.katalon.core.main.CustomKeywordDelegatingMetaClass.invokeStaticMethod(CustomKeywordDelegatingMeta.help.click_helper.invokeMethod(click_helper.groovy) )在org.codehaus.groovy的org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)的org.codehaus.groovy.runtime.callsite.StaticMetaClassSite.call(StaticMetaClassSite.java:53)处。 org.codehaus.groovy.runtime.calls的runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) ite.AbstractCallSite.call(AbstractCallSite.java:117)at Script1526547459389.run(Script1526547459389.groovy:30)at com.kms.katalon.core.main.ScriptEngine.run(ScriptEngine.java:183)at com.kms.katalon com.kms.katalon.core.main.TestCaseExecutor.runScript(TestCaseExecutor.java:295)上的.core.main.ScriptEngine.runScriptAsRawText(ScriptEngine.java:108)com.kms.katalon.core.main.TestCaseExecutor.doExecute (TestCaseExecutor.java:286)在com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:265)在com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:257) com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:86)上com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:201)。 main.TestCaseMain.runTestCase(TestCaseMain.java:77)位于com.kms.katalon.core.main.TestCaseMain $ runTestCase $ 0.call(未知源),位于org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteAr ray.java:48)位于org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)位于tempTestCase1526623462047 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:149) .run(TempTestCase1526623462047.groovy:20)在groovy.lang.GroovyShell.runScriptOrMainOrTestOrRunnable(GroovyShell.java:263)在groovy.lang.GroovyShell.run(GroovyShell.java:518)在groovy.lang.GroovyShell.run。 groovy.ui.GroovyMain.processOnce(GroovyMain.java:653)处groovy.ui.GroovyMain.run(GroovyMain.java:384)处groovy.ui.GroovyMain.process(GroovyMain.java:370)处groovy.ui.GroovyMain.processArgs(GroovyMain.java:129)在groovy.ui.GroovyMain.main(GroovyMain.java:109)在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)在sun.reflect.NativeMethodAccessorImpl.invoke(本机方法)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)处的NativeMethodAccessorImpl.java:62)在java.lang.reflect.Method.invoke(Method.java:498)处 t org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:131)上的org.codehaus.groovy.tools.GroovyStarter.java:109)原因:java.io.FileNotFoundException:C:\\ UIDriverProject \\ UIDriverPro \\ Test%20Folder \\ TESTDATA \\ TEST.dat(系统找不到指定的路径)位于java.io.FileOutputStream.open0(本机方法)位于java.io.FileOutputStream.open(FileOutputStream.java:270) org.apache.xalan.transformer.TransformerIdentityImpl.createResultContentHandler(TransformerIdentityImpl.java:287)上的java.io.FileOutputStream。(FileOutputStream.java:101)上的java.io.FileOutputStream。(FileOutputStream.java:213)... 51更多

您应该尝试这样:

    String filepath = "C:/UIDriverProject/UIDriverPro/Test Folder/TESTDATA/TEST.dat";
    URI file = new File(filepath).toURI();
    DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
    Document doc = docBuilder.parse(file.toURL().toString());

转换为URI对象可确保URI file = new File(filepath).toURI();

请尝试将代码修改为以下内容,并让我知道是否可以解决。

    File filepath = new File("C:/UIDriverProject/UIDriverPro/Test Folder/TESTDATA/TEST.dat");
    DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
    Document doc = docBuilder.parse(filepath);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM