我想获得一个目录中具有特定扩展名的文件列表.在API(Java 6)中,我看到了一个File.listFiles(FileFilter)可以执行此操作的方法.
由于我需要特定的扩展,我创建了一个FileNameExtensionFilter.但是当我使用listFiles它时出现编译错误.我认为,因为FileNameExtensionFilter implements FileFilter,我应该能够做到这一点.代码如下:
FileNameExtensionFilter filter = new FileNameExtensionFilter("text only","txt");
String dir = "/users/blah/dirname";
File f[] = (new File(dir)).listFiles(filter);
Run Code Online (Sandbox Code Playgroud)
最后一行显示编译错误:
类型File中的方法listFiles(FileNameFilter)不适用于FileNameExtensionFilter类型的参数
我试图使用listFiles(FileFilter),而不是listFiles(FileNameFilter).为什么编译器不能识别这个?
如果我编写自己的扩展过滤器扩展,这是有效的FileFilter.我宁愿使用而FileNameExtensionFilter不是写我自己的.我究竟做错了什么?
这是针对那里的摇摆专家.我花了相当多的时间来解决这个问题,所以我需要几行来解释这个问题.
我有一个独立的java swing应用程序(java 6).在我的应用程序中,我有一个带有单选按钮组的框架.我有一个链接到组中所有按钮的操作.该操作检查以查看选择了哪个单选按钮并执行某些操作."工作"涉及一些背景计算以及我的应用程序中的两个其他框架中的一些绘画.后台计算是多线程的.
我想在用户选择其中一个单选按钮时显示进度条.但是,当选择单选按钮时,在发生对单选按钮的操作时,进度条永远不会出现.我尝试了jdialog类型的进度条,玻璃窗格等.在"工作"全部完成之前,它们都没有出现.这似乎是因为Swing没有完成对单选按钮的绘制,直到相应动作中的"工作"完成.由于EDT一次只做一件事,因此从不显示进度条对话框(或玻璃窗格).
然后我尝试使用SwingWorker来完成所有这些"工作".启动进度条(或激活玻璃窗格),启动SwingWorker并关闭SwingWorker的done()方法中的进度条(或停用玻璃窗格).这似乎提升了进度条很好,但是作为"工作"一部分的绘画有时候没有完成,留下了一些绘画工件(paintComponent方法非常复杂,所以不想在这里重现).如果我调整窗口大小,工件就会消失.事实上,如果我使用扩展Thread而不是SwingWorker的类,就会发生这种情况.这都是因为Swing不是线程安全的,我试图从除EDT之外的线程进行GUI工作.我明白那一部分.
我该怎么办?"工作"大约需要30秒,如果没有向用户显示程序正在运行的某种迹象,那么这似乎太长了.我也尝试将光标更改为等待光标并遇到与上述相同的问题.我唯一能做的就是禁用框架并将框架的标题设置为"work ......"等文本.
以前有人见过这个问题吗?
我有一个调用多线程例程的Fortran 90程序。我想从调用例程中计时该程序。如果使用cpu_time(),最终将所有线程(本例中为8)的cpu_time加在一起,而不是程序运行的实际时间。该etime()例程似乎也是如此。关于如何计时该程序(不使用秒表)的任何想法?
这就是我想做的事情 - 我有一个带有几个构造函数的A类.我不想在A类中改变任何东西.我想要一个新的B类,A应该是B的一个元素,并且有一个镜像A的构造函数.
class A{
public:
A(type1 arg1);
A(type2 arg1, type3 arg2);
}
Run Code Online (Sandbox Code Playgroud)
我知道我能做到这一点
class B{
A *a;
public:
B(type1 arg1) {
a = new A(arg1);
//some other stuff here
}
B(type2 arg1, type3 arg2) {
a = new A(arg1, arg2);
//some other stuff here, same as the first constructor
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
class B{
A *a;
public:
B(list_of_args) {
a = new A(list_of_args);
//some other stuff here
}
}
Run Code Online (Sandbox Code Playgroud)
我不想扩展A.我只是想找到一种方法来获取传递给B的参数列表并用此调用A的构造函数.(不改变A).
我正在尝试使用一些开源java库,并且该库将JCE作为其依赖项之一.如果我使用的是Java 1.6,我是需要单独下载JCE库还是它的一部分?看起来像bountycastle.org(JCE的开源提供商)没有列出1.4+的JCE
编辑:有人可以解释为什么添加删除操作符不会更改Valgrind输出?请不要让我阅读C++书籍,我浏览了一对夫妇并且没有在那里找到答案.
我是C++的新手,来自java世界,我似乎无法理解如何使用new和delete运算符.
我有一个方法(myMethod())启动一个类,MyClass.在MyClass中,使用new和new []运算符创建了一些数组和很少的其他对象.最初我没有为这个类编写析构函数(我假设当控件从我的方法返回到main时,这些MyClass对象以及与它相关的所有内容都会自动"释放").
当我用Valgrind运行我的程序时,这是我得到的泄漏摘要:
==9446== LEAK SUMMARY:
==9446== definitely lost: 1,957,019 bytes in 38 blocks.
==9446== indirectly lost: 4,171,184 bytes in 3,040 blocks.
==9446== possibly lost: 0 bytes in 0 blocks.
==9446== still reachable: 91,984 bytes in 991 blocks.
==9446== suppressed: 0 bytes in 0 blocks.
==9446== Reachable blocks (those to which a pointer was found) are not shown.
==9446== To see them, rerun with: --show-reachable=yes
Run Code Online (Sandbox Code Playgroud)
所以我添加了一个析构函数,它删除所有数组并将对象设置为null.我没有在MyClass对象上显式调用delete.现在,当我使用Valgrind运行我的程序时,这是我得到的泄漏摘要.
LEAK SUMMARY:
==9223== definitely lost: 1,957,019 bytes in 38 blocks.
==9223== indirectly …Run Code Online (Sandbox Code Playgroud) java ×3
c++ ×2
file ×1
filter ×1
fortran ×1
java-6 ×1
jce ×1
memory-leaks ×1
openmp ×1
radio-button ×1
swingworker ×1
templates ×1
time ×1
valgrind ×1