我正在使用TrueZip 7创建一个tzp文件,并使用cp_rp方法将所有目录内容一次性添加到tzp文件中.
之后,我正在尝试将tzp文件的所有内容提取到目标目录.但是,电话:
zipFile = new TFile("test.zip");
public void extract(TFile file){
for (TFile iFile : zipFile.listFiles()){
if(iFile.isDirectory()){
extract(iFile);
}else{
File output = new File(iFile.getPath());
iFile.mv(output);
}
}
}
Run Code Online (Sandbox Code Playgroud)
失败并出现错误:java.io.IOException:[path]\test.zip\Myjar.jar(目标已存在).如果我使用cp而不是mv,那么错误是[path]\test.zip\Myjar.jar(包含在[path]\test.zip\Myjar.jar中)
问题似乎也是TrueZip将zip和jar识别为目录和档案,因此当对它们执行isDirectory()时,这会成功,并且执行listFiles()会返回其中包含的所有文件,因此运行cp()on文件递归导致所有jar/zip内容被复制为目录.
提取这些存档文件而不扩展它们的正确方法是什么?
我正在尝试在基于StandardTokenParsers的解析器中使用正则表达式.为此,我将StdLexical子类化如下:
class CustomLexical extends StdLexical{
def regex(r: Regex): Parser[String] = new Parser[String] {
def apply(in:Input) = r.findPrefixMatchOf(in.source.subSequence(in.offset, in.source.length)) match {
case Some(matched) => Success(in.source.subSequence(in.offset, in.offset + matched.end).toString,
in.drop(matched.end))
case None => Failure("string matching regex `" + r + "' expected but " + in.first + " found", in)
}
}
override def token: Parser[Token] =
( regex("[a-zA-Z]:\\\\[\\w\\\\?]* | /[\\w/]*".r) ^^ { StringLit(_) }
| identChar ~ rep( identChar | digit ) ^^ { case first ~ rest => processIdent(first :: …Run Code Online (Sandbox Code Playgroud) 我知道解决相关问题有多个问题,但我不确定它是否确实会攻击我正在寻找的内容.经过几年的Java开发,我仍然是Scala的新手.我正在寻找测试对象是否已初始化的最佳方法,如果没有,则初始化它.例如,在Java中:
private MyObject myObj = null;
Run Code Online (Sandbox Code Playgroud)
在未来的某个时刻:
public void initMyObj(){
if (myObj == null){
myObj = new MyObj();
}
// do something with myObj
}
Run Code Online (Sandbox Code Playgroud)
在此之后,我可能会将myObj重新分配给另一个对象,但这不太可能.在Scala中,我有这个:
class Test {
var myObj: MyObj = _
}
Run Code Online (Sandbox Code Playgroud)
我已经读过我可以使用Option,比如:
var myObj = None : Option[MyObj]
Run Code Online (Sandbox Code Playgroud)
然后我的支票:
myObj match {
case None => ...
case Some(value) => ...
}
Run Code Online (Sandbox Code Playgroud)
但是当我在任何其他时间在其他任何地方都不能进行这种检查时,使用这种模式会感到很尴尬 - 尽管Scala是新手,但我可能错了.这是实现我想要的最佳方式还是没有其他选项不涉及选项?
是的,我是Angular和Jasmine的新手,我无法弄清楚如何为我的测试注入一个模拟$ log.这是测试:
(function () {
'use strict';
describe('basic test', function(){
it('should just work', function(){
var $log;
beforeEach(inject(function(_$log_){
$log = _$log_;
}));
$log.info('it worked!');
expect($log.info.logs).toContain(['it worked!']);
});
});
}())
Run Code Online (Sandbox Code Playgroud)
这在注入行上失败并出现错误:
TypeError: Cannot set property 'typeName' of undefined
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我正在使用此处列出的不同属性,特别是标记为 Performance Extensions 的属性。我正在使用cacheResultSetMetadata进行测试,但无法找到有关该属性设置为 true 时究竟缓存的内容的文档。
另外,有没有推荐/不推荐使用它的场景?
假设我创建了一个B类实例,它有一个静态变量x,在B类声明中赋值为3.在main()方法中,我这样做:
B b = new B();
b.x = 7; //allowed to use an instance to set the static member value
Run Code Online (Sandbox Code Playgroud)
在此之后,b被序列化然后反序列化.然后,出现以下行:
System.out.println ("static: " + b.x);
Run Code Online (Sandbox Code Playgroud)
有什么价值?7或3?
我知道静态变量不是序列化的,但是,因为整个类只有一个静态成员的副本,并且该值设置为7,如果在反序列化实例后保留它?