我想检查现有文件是在特定目录中还是在其子目录中.
我有两个File对象.
File dir;
File file;
Run Code Online (Sandbox Code Playgroud)
两者都保证存在.我们假设
dir = /tmp/dir
file = /tmp/dir/subdir1/subdir2/file.txt
Run Code Online (Sandbox Code Playgroud)
我希望此检查返回true
现在我正在这样检查:
String canonicalDir = dir.getCanonicalPath() + File.separator;
boolean subdir = file.getCanonicalPath().startsWith(canonicalDir);
Run Code Online (Sandbox Code Playgroud)
这似乎适用于我的有限测试,但我不确定这是否会在某些操作系统上出现问题.我也不喜欢getCanonicalPath()可以抛出我必须处理的IOException.
有没有更好的办法?可能在某些图书馆?
谢谢
我正在尝试使用 Maven 依赖插件来获取特定版本范围内的工件。我需要在命令行(或在脚本中)执行此操作
这是我尝试过的:
mvn dependency:get -Dartifact="junit:junit:[4.0,4.11)"
Run Code Online (Sandbox Code Playgroud)
然而,该范围显然并未得到认可。Maven 尝试下载文字版本为[4.0.0,4.11.0)的工件,但失败了。
我想我使用了错误的语法和/或没有正确转义。
我怎样才能让maven获得符合指定版本范围的最高版本的工件?
错误信息:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.8:get (default-cli) on project standalone-pom: Couldn't download artifact: Missing:
[ERROR] ----------
[ERROR] 1) junit:junit:jar:[4.0,4.11)
Run Code Online (Sandbox Code Playgroud) 使用JavaFX2时,如何调整Text对象字符之间的字母间距?
欢迎使用代码或css中的示例.
当一个线程对 mongo 数据库执行查询时,我的应用程序中发生死锁,导致触发应用程序事件,而另一个线程尝试使用AutowireCapableBeanFactory.
这发生在 @Service 的构造函数中,并阻止整个应用程序的启动,因为服务是在启动时创建的。
伪代码:
@Service
public class MyService {
@Autowired
public MyService(AutowireCapableBeanFactory factory, TaskScheduler scheduler) {
MyFirstCommand command1 = factory.getBean(MyFirstCommand.class);
scheduler.schedule(command1, new Date());
MySecondCommand command2 = factory.getBean(MySecondCommand.class);
scheduler.schedule(command2, new Date());
}
}
public class MyFirstCommand extends Runnable {
@Autowired MongoOperations mongo;
@Override
public void run() {
mongo.findById("some-id", MyData.class);
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,我有一些AbstractMongoEventListeners 注册为@Components。
死锁发生在一个线程MyFirstCommand.run()执行时mongo.findById()。另一个线程在MyService执行factory.getBean(MySecondCommand.class)的构造函数中:
Found one Java-level deadlock:
=============================
"pool-1-thread-1":
waiting to lock monitor 0x00007fd05d5bf5d8 (object …Run Code Online (Sandbox Code Playgroud) 请考虑以下脚本:
#! /bin/bash -e
echo {foo,bar}
EX={foo,bar}
echo ${EX}
Run Code Online (Sandbox Code Playgroud)
该脚本的输出是:
foo bar
{foo,bar}
Run Code Online (Sandbox Code Playgroud)
我echo想要执行大括号扩展的命令${EX}.因此,我希望看到一个输出
foo bar
foo bar
Run Code Online (Sandbox Code Playgroud)
我想创建一个脚本,用户可以在其中提供带有大括号的路径,其中复制了每个扩展版本.
像这样的东西:
#! /bin/bash -e
$SOURCES=$1
$TARGET=$2
cp -r ${SOURCES} ${TARGET}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
java ×2
bash ×1
concurrency ×1
css ×1
deadlock ×1
dependencies ×1
javafx-2 ×1
maven ×1
maven-3 ×1
shell ×1
spring ×1
spring-boot ×1