files.copy抛出java.nio.file.nosuchfileexception,即使要复制的文件绝对存在



我有一个看似简单的应用程序的问题。它应该做什么:

- 读取(硬编码)目录的文件(*.jpg)

- 使用所述JPG的包含的元数据(通过实施的库获得)生成目录(./year/month/)

- 复制文件进入相应的目录。

什么没有: - 将文件复制到相应的目录中,因为它找不到原始文件(以前它自行读出)。老实说,我不知道为什么是。

在这里sourcecode:

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());
}

}

和这里的全部例外:

运行: 线程"主要" Java.nio.file.nosuchfileException中的异常:d: benutzerdaten paul paul document netBeanSprojects fotosorter fotosorter bitmaps java -fotos java -fotos java -fotos java -fotos cimg2709.jpg- d: bitmaps java-temp 2008 sep cimg2709.jpg 在sun.nio.fs.windowsexception.translatetoioexception(windowsexception.java:79) 在sun.nio.fs.windowsexception.rethrowasioexception(windowsexception.java:97) 在sun.nio.fs.windowsfilecopy.copy(windowsfilecopy.java:205) 在sun.nio.fs.windowsfilesystemprovider.copy(windowsfilesystemprovider.java:277) 在java.nio.file.files.copy(files.java:1225) 在fotosorter.fotosorter.copyfile(fotosorter.java:64) 在fotosorter.fotosorter.main(fotosorter.java:59) Java结果:1 建立成功(总时间:0秒)

您可能已经猜到它还尚未完成。除了解决我先前所述的问题外,我仍然必须将其放入方法中。

确保存在输入文件。

,但还要确保目标文件夹的路径确实存在。

相关内容

  • 没有找到相关文章

最新更新