如何使用java为Windows VM上的其他用户管理文件权限
我正在编写一个Jmeter脚本,并且正在处理一些我在JSR223采样器中控制的文件。问题是我需要创建一个本地文件,但是如果该文件名已经存在,我想在重新创建它之前删除它。我的代码在我的笔记本电脑(Windows10)上运行良好,但我现在正在将Jmeter脚本移植到测试环境中的虚拟机上,这似乎是问题的一部分。虚拟机运行的是Windows Server 2019,但这是学术性的。我使用我的标准内部公司凭据访问该机器 我的问题是:如何强制删除该文件,或单独修改其系统访问权限,以便继续删除 我是一名Java编码新手,但在其他方面我是一名经验丰富的集成人员,在30多年前的许多编码语言中都有广泛的经验 Java版本:如何使用java为Windows VM上的其他用户管理文件权限,java,windows,jmeter,Java,Windows,Jmeter,我正在编写一个Jmeter脚本,并且正在处理一些我在JSR223采样器中控制的文件。问题是我需要创建一个本地文件,但是如果该文件名已经存在,我想在重新创建它之前删除它。我的代码在我的笔记本电脑(Windows10)上运行良好,但我现在正在将Jmeter脚本移植到测试环境中的虚拟机上,这似乎是问题的一部分。虚拟机运行的是Windows Server 2019,但这是学术性的。我使用我的标准内部公司凭据访问该机器 我的问题是:如何强制删除该文件,或单独修改其系统访问权限,以便继续删除 我是一名Jav
- 我的本地机器:v8更新261
- 虚拟机:v8更新261
- 我的本地机器:Jmeter 5.2.1
- 虚拟机:Jmeter 5.3
请注意,如果我在Windows中手动编辑访问属性,以便本地用户具有完全访问权限,则我的代码运行时不会出现任何问题,文件将被删除 当达到delete方法时,我的控制台日志会报告以下消息: JSR223采样器:JSR223脚本生成plink脚本文件(BSS)中存在问题 MNP文件),消息:javax.script.ScriptException: java.io.FileNotFoundException:D:\SLAB Automation\Jmeter Scripts\Scripts\check\u bss\u mnp\u BRP\u files.plink(访问被拒绝) 这是我的代码,它是Groovy脚本引擎中的Java
// if the file exists. If it does, delete it and recreate it.
f= new File(fPath);
if (f.exists()) {
log.info("File " + fName + " exists.. deleting it.");
System.gc(); // Run Garbage collection (Found a solution that suggests to do this, but it makes no difference)
f.setWritable(true); // Try modifying the permissions; also fails.
f.delete(); // *** Here is my problem ***
}
// Open File
f = new FileOutputStream(fPath, false); // Second param: true to append; false to overwrite (what we want)
p = new PrintStream(f);
// Write data to file
p.println( "*** my content ***");
// Close File(s)
p.close();
f.close();
log.info("-- Created file: " + fPath);
对于需要堆栈跟踪的任何人,为了完整起见:
2020-09-09 18:32:21,317 ERROR o.a.j.p.j.s.JSR223Sampler: Problem in JSR223 script Build plink Script File (BSS MNP File ), message: javax.script.ScriptException: java.io.FileNotFoundException: D:\SLAB Automation\Jmeter Scripts\scripts\check_bss_mnp_BRP_files.plink (Access is denied)
javax.script.ScriptException: java.io.FileNotFoundException: D:\SLAB Automation\Jmeter Scripts\scripts\check_bss_mnp_BRP_files.plink (Access is denied)
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:320) ~[groovy-jsr223-3.0.3.jar:3.0.3]
at org.codehaus.groovy.jsr223.GroovyCompiledScript.eval(GroovyCompiledScript.java:71) ~[groovy-jsr223-3.0.3.jar:3.0.3]
at javax.script.CompiledScript.eval(Unknown Source) ~[?:1.8.0_261]
at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:222) ~[ApacheJMeter_core.jar:5.3]
at org.apache.jmeter.protocol.java.sampler.JSR223Sampler.sample(JSR223Sampler.java:72) [ApacheJMeter_java.jar:5.3]
at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:630) [ApacheJMeter_core.jar:5.3]
at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:558) [ApacheJMeter_core.jar:5.3]
at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:489) [ApacheJMeter_core.jar:5.3]
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256) [ApacheJMeter_core.jar:5.3]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_261]
Caused by: java.io.FileNotFoundException: D:\SLAB Automation\Jmeter Scripts\scripts\check_bss_mnp_BRP_files.plink (Access is denied)
at java.io.FileOutputStream.open0(Native Method) ~[?:1.8.0_261]
at java.io.FileOutputStream.open(Unknown Source) ~[?:1.8.0_261]
at java.io.FileOutputStream.<init>(Unknown Source) ~[?:1.8.0_261]
at java.io.FileOutputStream.<init>(Unknown Source) ~[?:1.8.0_261]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_261]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_261]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_261]
at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:1.8.0_261]
at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:72) ~[groovy-3.0.3.jar:3.0.3]
at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:105) ~[groovy-3.0.3.jar:3.0.3]
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59) ~[groovy-3.0.3.jar:3.0.3]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:263) ~[groovy-3.0.3.jar:3.0.3]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:286) ~[groovy-3.0.3.jar:3.0.3]
at Script115.run(Script115.groovy:40) ~[?:?]
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:317) ~[groovy-jsr223-3.0.3.jar:3.0.3]
... 9 more
2020-09-09 18:32:21317错误o.a.j.p.j.s.JSR223采样器:JSR223脚本生成plink脚本文件(BSS MNP文件)中存在问题,消息:javax.script.ScriptException:java.io.FileNotFoundException:D:\SLAB Automation\Jmeter Scripts\Scripts\check_BSS_MNP_BRP_files.plink(访问被拒绝)
javax.script.ScriptException:java.io.FileNotFoundException:D:\SLAB Automation\Jmeter Scripts\Scripts\check\u bss\u mnp\u BRP\u files.plink(访问被拒绝)
在org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:320)~[groovy-jsr223-3.0.3.jar:3.0.3]
在org.codehaus.groovy.jsr223.GroovyCompiledScript.eval(GroovyCompiledScript.java:71)~[groovy-jsr223-3.0.3.jar:3.0.3]
在javax.script.CompiledScript.eval(未知源代码)~[?:1.8.0_261]
在org.apache.jmeter.util.jsr23testelement.processFileOrScript(jsr23testelement.java:222)~[ApacheJMeter_core.jar:5.3]
在org.apache.jmeter.protocol.java.sampler.jsr23sampler.sample(jsr23sampler.java:72)[ApacheJMeter_java.jar:5.3]
位于org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:630)[ApacheJMeter_core.jar:5.3]
在org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:558)[ApacheJMeter_core.jar:5.3]
位于org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:489)[ApacheJMeter_core.jar:5.3]
在org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256)[ApacheJMeter_core.jar:5.3]
在java.lang.Thread.run(未知源代码)[?:1.8.0_261]
原因:java.io.FileNotFoundException:D:\SLAB Automation\Jmeter Scripts\Scripts\check\u bss\u mnp\u BRP\u files.plink(访问被拒绝)
在java.io.FileOutputStream.open0(本机方法)~[?:1.8.0_261]
在java.io.FileOutputStream.open(未知源代码)~[?:1.8.0_261]
在java.io.FileOutputStream(未知源代码)~[?:1.8.0_261]
在java.io.FileOutputStream(未知源代码)~[?:1.8.0_261]
在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)~[?:1.8.0\u 261]
在sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)~[?:1.8.0_261]
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(未知源)~[?:1.8.0_261]
在java.lang.reflect.Constructor.newInstance(未知源代码)~[?:1.8.0_261]
在org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:72)~[groovy-3.0.3.jar:3.0.3]
在org.codehaus.groovy.runtime.callsite.ConstructorSite$constructorsiteNounewrapnocerce.callConstructor(ConstructorSite.java:105)~[groovy-3.0.3.jar:3.0.3]
在org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59)~[groovy-3.0.3.jar:3.0.3]
在org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:263)~[groovy-3.0.3.jar:3.0.3]
在org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:286)~[groovy-3.0.3.jar:3.0.3]
在Script115.run(Script115.groovy:40)~[?:?]
在org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:317)~[groovy-jsr223-3.0.3.jar:3.0.3]
... 9更多
您可以执行以下操作并检查它是否有效吗