我一直在尝试使用Java IO file.delete()
API 删除Windows操作系统中的文件.但是它失败并返回false.相同的代码就像Ubuntu中的魅力一样.
我已经验证该文件的权限允许程序删除它.此外,文件的所有输入和输出流都已尝试使用资源打开.
try (InputStream in = new FileInputStream(localFile); OutputStream out = new FileOutputStream(destinationFileName))
使用我已经测试过的调试器,发现在代码行中我删除了它true
为以下API调用返回的文件.
file.exists()
file.canRead();
file.canWrite();
file.canExecute();
Run Code Online (Sandbox Code Playgroud)
我甚至尝试System.gc()
在调用delete之前添加,以确保所有流都关闭.
不确定这是否是有用的信息,但我甚至尝试使用Apache commons FileUtils.forceDelete(file)
方法,它也失败了.
那我在这里错过了什么?
更新:
通过使用Files.delete(Paths.get(file.getAbsolutePath()))
我得到以下错误.
java.nio.file.FileSystemException: C:\Users\thuvvareka\Desktop\temp\in\sd.xml: The process cannot access the file because it is being used by another process.
at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269)
at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103)
at java.nio.file.Files.delete(Files.java:1126)
at org.adroitlogic.x.transport.file.FileMessageInjector.finalizeProcessing(FileMessageInjector.java:161)
at org.adroitlogic.x.transport.file.FileMessageInjector.afterProcess(FileMessageInjector.java:123)
at org.adroitlogic.x.transport.file.FileMessageInjector.afterProcess(FileMessageInjector.java:37)
at org.adroitlogic.x.base.trp.ScheduledMessageInjector.lambda$2(ScheduledMessageInjector.java:72)
at org.adroitlogic.x.api.trp.MessageReceiver.lambda$receive$3(MessageReceiver.java:100)
at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:760)
at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:736)
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474) …
Run Code Online (Sandbox Code Playgroud) 我看过youtube ultraesb1.0.1演示用IntelliJ CE9包含的ultra-dynamic.xml可能会被ultraesb 3.2.0中的ultra-custom.xml所取代.
ultra-custom.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:u="http://www.adroitlogic.org/ultraesb"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.adroitlogic.org/ultraesb http://schemas.ultraesb.org/ultraesb-2.0.xsd">
<u:endpoint id="echo-service">
<u:address>http://localhost:9000/service/EchoService</u:address>
</u:endpoint>
<u:sequence id="error-handler">
<u:java><![CDATA[
logger.error("Custom error handler : " + msg.getLastException().toString());
]]></u:java>
</u:sequence>
<u:proxy id="health-check">
<u:transport id="http-8280"/>
<u:transport id="https-8443"/>
<u:target>
<u:inSequence>
<u:java><![CDATA[
msg = msg.createDefaultResponseMessage();
mediation.sendResponse(msg,org.adroitlogic.ultraesb.api.management.
ServerAdminImpl.getInstance().getUserDefinedStatusCode());
]]></u:java>
</u:inSequence>
</u:target>
</u:proxy>
</beans>
Run Code Online (Sandbox Code Playgroud)
虽然我无法在互联网上找到ultra-dynamics.xml,但我会从youtube上关注ultraesb 1.0.1演示,以获得我最初的平滑输出.此外,我注意到ultra-custom.xml包含单独的独立标记,而ultra-dynamics.xml包含所有内容
任何人都可以帮忙
是否可以设置ActiveMQ传输参数,例如maxReconnectAttempts
在运行时使用Java API?
在我的情况下,我最初通过提供基本故障转移URL故障转移来创建ActiveMQ连接工厂:
ActiveMQSslConnectionFactory connectionFactory = new ActiveMQSslConnectionFactory("(ssl://192.168.1.112:61617,ssl://192.168.1.112:61619)?randomize=false")
但是后来我需要将传输参数设置为此连接工厂,例如maxReconnectAttempts
.可能吗?