假设我有一个类和一个方法
class A {
void foo() throws Exception() {
...
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想为A一个流传递的每个实例调用foo,如:
void bar() throws Exception {
Stream<A> as = ...
as.forEach(a -> a.foo());
}
Run Code Online (Sandbox Code Playgroud)
问题:如何正确处理异常?代码无法在我的机器上编译,因为我没有处理foo()可能抛出的异常.在throws Exception的bar似乎是没用在这里.这是为什么?
我有这个函数以递归方式打印目录中的所有文件的名称.问题是我的代码非常慢,因为它必须在每次迭代时访问远程网络设备.
我的计划是先递归加载目录中的所有文件,然后再使用正则表达式遍历所有文件,过滤掉我不想要的所有文件.有人有更好的建议吗?
public static printFnames(String sDir){
File[] faFiles = new File(sDir).listFiles();
for(File file: faFiles){
if(file.getName().matches("^(.*?)")){
System.out.println(file.getAbsolutePath());
}
if(file.isDirectory()){
printFnames(file.getAbsolutePath());
}
}
}
Run Code Online (Sandbox Code Playgroud)
这只是稍后的一个测试,我不打算使用这样的代码,而是我要将每个匹配高级正则表达式的文件的路径和修改日期添加到数组中.
我想列出指定目录中的所有FILES和该目录中的子目录.不应列出任何目录.
我目前的代码如下.它无法正常工作,因为它只列出指定目录中的文件和目录.
我怎样才能解决这个问题?
final List<Path> files = new ArrayList<>();
Path path = Paths.get("C:\\Users\\Danny\\Documents\\workspace\\Test\\bin\\SomeFiles");
try
{
DirectoryStream<Path> stream;
stream = Files.newDirectoryStream(path);
for (Path entry : stream)
{
files.add(entry);
}
stream.close();
}
catch (IOException e)
{
e.printStackTrace();
}
for (Path entry: files)
{
System.out.println(entry.toString());
}
Run Code Online (Sandbox Code Playgroud)
问候.
我正在尝试计算光盘上文件的大小.在java-7中,这可以使用Files.walkFileTree来完成,如我在这里的回答所示.
但是,如果我想使用java-8流来执行此操作,它将适用于某些文件夹,但不适用于所有文件夹.
public static void main(String[] args) throws IOException {
long size = Files.walk(Paths.get("c:/")).mapToLong(MyMain::count).sum();
System.out.println("size=" + size);
}
static long count(Path path) {
try {
return Files.size(path);
} catch (IOException | UncheckedIOException e) {
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码适用于路径,a:/files/但c:/它会抛出异常
Exception in thread "main" java.io.UncheckedIOException: java.nio.file.AccessDeniedException: c:\$Recycle.Bin\S-1-5-20
at java.nio.file.FileTreeIterator.fetchNextIfNeeded(Unknown Source)
at java.nio.file.FileTreeIterator.hasNext(Unknown Source)
at java.util.Iterator.forEachRemaining(Unknown Source)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Unknown Source)
at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown Source)
at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
at java.util.stream.LongPipeline.reduce(Unknown …Run Code Online (Sandbox Code Playgroud) 我试图获取目录及其子目录中的所有文件的列表.我目前的递归方法如下:
private void printFiles(File dir) {
for (File child : dir.listFiles()) {
if (child.isDirectory()) {
printFiles(child);
} else if (child.isFile()) {
System.out.println(child.getPath());
}
}
}
printFiles(new File("somedir/somedir2"));
Run Code Online (Sandbox Code Playgroud)
但是,我希望有一种非递归方式(可能是现有的API调用).如果没有,这是最干净的方式吗?
编写JSP文件时,如何在运行时获取此文件的当前目录
(以便能够迭代目录并列出其内容)?
由于某些安全问题,是否会限制某些文件I/O操作?
我更喜欢没有访问某些特定于实现的服务器变量/属性的解决方案.
编辑:
我不会问它是否如此简单new File("."),因为这只会给出服务器可执行文件的目录.
使用此代码
new File("/mnt/sdcard/folder").listFiles().length
Run Code Online (Sandbox Code Playgroud)
返回特定目录中的文件夹和文件的总和,而不关心子目录.我想获取目录及其子目录中所有文件的数量.
PS:如果它返回所有文件和文件夹的总和几乎不重要.
任何帮助表示感谢,谢谢
嗨我忙于一个应用程序,反编译jar将文件粘贴到反编译jar的文件夹中,然后将文件夹压缩到一个jar中.
反编译和复制工作,但我无法设法让文件夹内容被jared(压缩成jar),我做了大约3小时的研究,发现只有过时的方法.请帮忙.
-Regards marko5049
编辑更多信息:我道歉我的意思是我不能让我的应用程序将文件夹转换为jar文件,我的应用程序是jar文件的修改安装程序.然后,它会提取jars文件,然后添加修改,然后应该将文件夹重新转换为jar文件,以便安装修改.jar文件不可执行.
如何打开当前目录中但不存在于另一个目录中的文件.例如,我有一个文件夹F:/ test,我的文件位于F:/test/test2/doit.txt和D:/ test3/doit2.文本
在制作File对象时在参数中输入的内容如下:
File f = new File("/test2/doit.txt");
Run Code Online (Sandbox Code Playgroud) 这是我必须做的,但我不知道从哪里开始:
编写一个程序,允许您从指定目录浏览图像(gif,jpg).随后在窗口中显示图片,如下所示:
- a)目录和图像之间的时间间隔(以秒为单位)是在程序开始时根据文件中的信息确定的,
- b)图像以原始尺寸显示,
- c)将图像调整到框架
我知道这个非常基本的问题,但只是开始使用Java.是否有某种功能,它会给我一个文件夹中所有项目的名称?