Попытка создать файл для сохранения изображения Java - PullRequest
0 голосов
/ 03 июля 2011

Я получаю следующее исключение при попытке создать файл в Windows 7 с использованием Java.Примером пути является «C: /g-ecx/images-amazon/com/images/G/01/gno/images/orangeBlue/navPackedSprites-US-22.V183711641.png».Если я жестко код в пути, это работает, однако.Я два часа бьюсь головой, может кто-нибудь помочь.

mkdir не работает, но не из-за исключения, создание файла вызывает исключение.

java.io.IOException: The system cannot find the path specified
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(File.java:883)
at org.willmanning.mtt.html.processingbehavior.ImageProcessingBehavior.processImage(ImageProcessingBehavior.java:125)
at org.willmanning.mtt.html.processingbehavior.ImageProcessingBehavior.loadImages(ImageProcessingBehavior.java:99)
at org.willmanning.mtt.html.processingbehavior.ImageProcessingBehavior.processNodes(ImageProcessingBehavior.java:66)
at org.willmanning.mtt.html.processingbehavior.ImageProcessingBehavior.processRootNode(ImageProcessingBehavior.java:34)
at org.willmanning.mtt.html.ParsingFacade.processURL(ParsingFacade.java:38)
at org.willmanning.mtt.App.main(App.java:45)



 /**
 * 
 * @param image
 * @param url
 */
public void processImage(BufferedImage image, URL url) {

    StringBuilder path = new StringBuilder();
    path.append("C:/Users/will/Documents/");
    path.append(url.getHost().replace('.', '/'));
    path.append(url.getFile());
    path.replace(path.lastIndexOf("."), path.length(), ".txt");

    File file = new File(path.toString());

    boolean mkdir = file.mkdir();

    boolean isNew = false;
    try {
        isNew = file.createNewFile();
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

    /*
     * only create the file if it doesn't exist
     */
    if (isNew) {
        try {
            ImageIO.write(image, "jpg", file);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

1 Ответ

3 голосов
/ 03 июля 2011

Попробуйте использовать

boolean mkdir = file.mkdirs();

вместо

boolean mkdir = file.mkdir();

mkdirs () создает весь родительский путь / каталоги, если необходимо:

...