- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我对一个看似简单的应用程序有疑问。它应该做什么:
-读出一个(硬编码)目录的文件(*.jpg)
-使用所述 jpg 包含的元数据(通过实现的库获得)生成目录(./year/month/)
-将文件复制到相应的目录中。
它没有的东西:- 将文件复制到相应的目录中,因为它找不到原始文件(它之前自己读出的文件)。老实说,我不知道为什么会这样。
这里是源代码:
package fotosorter;
import com.drew.imaging.jpeg.JpegMetadataReader;
import com.drew.imaging.jpeg.JpegProcessingException;
import com.drew.metadata.Metadata;
import com.drew.metadata.exif.ExifIFD0Directory;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.nio.file.Files;
import java.util.Date;
public class Fotosorter {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws JpegProcessingException, IOException {
File startdir = new File(System.getProperty("user.dir"));
FileFilter jpg = new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getAbsoluteFile().toString().toLowerCase().endsWith(".jpg");
}
};
File dir = new File(startdir, "bitmaps"+File.separator+"java-temp");
if (!(dir.exists() && dir.isDirectory())) {
if (!dir.mkdir()) {
throw new IOException("kann das Verzeichnis nicht erzeugen ");
}
}
File[] files = new File(startdir, "" + File.separator + "bitmaps" + File.separator + "java-fotos").listFiles(jpg);
for (File file : files) {
Metadata metadata = JpegMetadataReader.readMetadata(file);
ExifIFD0Directory directory = metadata.getDirectory(ExifIFD0Directory.class);
String[] dates = directory.getDate(ExifIFD0Directory.TAG_DATETIME).toString().split(" ");
File year = new File(dir, dates[5]);
File month = new File(year, dates[1]);
File fname = new File(month, file.getName());
if (!(month.getParentFile().exists() && month.getParentFile().isDirectory())) {
if (!month.mkdirs()) {
throw new IOException("kann die Verzeichnisse nicht erzeugen");
}
}
copyFile(file, fname);
}
}
public static void copyFile(File from, File to) throws IOException {
Files.copy(from.toPath(), to.toPath());
}
这里是它抛出的完整异常:
run: Exception in thread "main" java.nio.file.NoSuchFileException: D:\Benutzerdaten\Paul\Documents\NetBeansProjects\Fotosorter\bitmaps\java-fotos\cimg2709.jpg -> D:\Benutzerdaten\Paul\Documents\NetBeansProjects\Fotosorter\bitmaps\java-temp\2008\Sep\cimg2709.jpg at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:79) at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) at sun.nio.fs.WindowsFileCopy.copy(WindowsFileCopy.java:205) at sun.nio.fs.WindowsFileSystemProvider.copy(WindowsFileSystemProvider.java:277) at java.nio.file.Files.copy(Files.java:1225) at fotosorter.Fotosorter.copyFile(Fotosorter.java:64) at fotosorter.Fotosorter.main(Fotosorter.java:59) Java Result: 1 BUILD SUCCESSFUL (total time: 0 seconds)
您可能已经猜到它还没有完成。除了解决我之前提到的问题外,我还必须将其放入方法中。
最佳答案
确保输入文件存在。
但还要确保目标文件夹的路径确实存在。
关于java - Files.copy 抛出 java.nio.file.NoSuchFileException 即使要复制的文件确实存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21366901/
我正在尝试读取文件,但收到 NoSuchFileException。我知道我的代码可以工作,因为它可以在我创建的另一个程序中工作,但现在不起作用。是的,目录正确,并且 src 文件夹中有一个文本文件。
尝试根据一个目录(字符串列表)中文件名的字符串搜索来复制和粘贴文件,根据搜索字符串创建一个新文件夹,然后将匹配的文件复制并粘贴到该文件夹时,我收到了 NoSuchFileException 。当我
我有一个Play应用程序(使用Scala构建),试图在Docker容器上运行。 以下是我用来启动容器以运行sbt命令的docker-compose.yml和build.sbt的部分。 ↓docker-
我正在使用FileSystemResource和Spring Webflux从硬盘驱动器提供文件。 @GetMapping("/news/file") fun getImage(@RequestPar
我正在尝试使用这行代码在 Hadoop HDFS 中编写: Files.write(Paths.get("hdfs:////localhost:9000/user/cloudera/trial/"+
我注意到另一个指示文件不存在的 Java 异常 - NoSuchFileException。我的任务是重构某个 api,它从不同的方法中抛出这两个,我只想使用一个。 我应该将 NoSuchFileEx
我正在尝试使用 Files.write() 方法将一些文本写入文件。 byte[] contents = project.getCode().getBytes(StandardCharsets.UTF
当我尝试使用 post 方法通过表单上传文件时,会发生 NoSuchFileException 类型的错误,但我不知道为什么。 这是代码: if (req.getPart("file") != nul
我正在 Spring Boot 上工作,并且我在此路径上创建了一个文件夹 web 和 images floders:myApp/src/web/images 当做时 private String sa
我尝试构建一个简单的 Spring Integration 文件夹用于数据导入。但在处理最后一个文件时,进程会抛出 NoSuchFileException 。我正在使用 Spring 5.0.5(在本
尝试将图像文件从一个文件夹复制到另一个文件夹时出现以下错误。 错误信息: java.nio.file.NoSuchFileException: C:\Users\William\Pictures\D8
String hi = System.getProperty("user.dir"); String noes = "%USERPROFILE%\\Start Menu\\Progra
我正在尝试使用 java nio 创建一个新文件,但遇到了 createFile 错误。错误看起来像这样: createFile error: java.nio.file.NoSuchFileExc
我有一个名为“result.csv”的文件,我想从该文件中读取某些数据并显示它们。我在我的 eclipse 项目文件夹中有那个文件。我仍然无法读取文件。 public static void mai
我已经在Windows 10计算机上安装了Elasticsearch,但无法启动它。 我通过运行命令启动服务后刚得到的错误如下: .\elasticsearch-7.6.1\bin\elasticse
当我使用javapacker command时,当它将库复制到应用程序文件夹时,我收到 NoSuchFileException 。我正在运行以下命令: javapackager -deploy -no
我正在开发一个小型 Gradle 项目,并希望在 Spock 测试中使用我的 Reader 类。当我开始测试时,Reader 类抛出: java.nio.file.NoSuchFileExceptio
java.nio.file.Files API 是对旧的 java.io.File 类的一个非常好的改进,但有一个细节让我感到奇怪;除了 delete()没有方法记录它们可能会抛出 NoSuchFil
我正在尝试在开发-测试-产品设置中放置一些核心文件。基本上,如果文件较新,则需要将其复制到下一级作为 QA 流程的一部分。 我正在使用 Java 8,所以我决定第一次尝试 NIO 文件/路径 api。
我正在玩java nio 2,我编写了一个简单的应用程序,应该创建一个文件并向其中写入内容,但我收到文件不存在异常 ByteBuffer buffer = ByteBuffer.wrap("jhkjh
我是一名优秀的程序员,十分优秀!