Java говорит "файл не существует" при использовании абсолютного пути - PullRequest
0 голосов
/ 30 октября 2018

Я работаю над очень простым проектом, который при запуске должен открывать изображение с помощью видеоплеера Windows. Однако я столкнулся с проблемой. Я хочу, чтобы он имел доступ к файлу "snp.jpg" с относительным путем к файлу, чтобы он работал на компьютерах, отличных от моего. Но когда я установил абсолютный путь к файлу, он завершается неудачно и говорит мне, что «файл ... не существует». Есть идеи?

import java.awt.Desktop;
    import java.io.File;



public class openpic {

    public static void main (String args[]) throws Exception

    {


        File f = new File ("C:\Users\charl\Desktop\Computer Science\JavaProjects\src\snp.png");
        Desktop d = Desktop.getDesktop();
        d.open(f);
        System.out.println("imageviewer open;");



    }

}

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Синтаксис Microsoft Windows

import java.awt.Desktop;
 import java.io.File;



    public class openpic {

        public static void main (String args[]) throws Exception

        {

            // Microsoft Windows syntax
            File f = new File ("C:\\Users\\charl\\Desktop\\Computer Science\\JavaProjects\\src\\snp.png");
            Desktop d = Desktop.getDesktop();
            d.open(f);
            System.out.println("imageviewer open;");



        }

    }
0 голосов
/ 30 октября 2018

(опс ... исправляю ответ, после того как прочитаю текст над кодом)

Относительный путь начнется с каталога, в котором вы запускаете программу. Также называется текущий рабочий каталог .

Кроме того, поскольку вы используете файлы, попробуйте использовать API-интерфейс NIO с помощью Path. Как:

Path filePath = Paths.get("./snp.png")

С этим API вы можете проверить рабочий каталог, используя:

filePath.toAbsolutePath()  
// just print it then, or check with a debugger

Кроме того, будьте осторожны с косыми чертами.

При использовании Windows и этой косой черты \ вам нужно сделать их двойными: \\.

Другой вариант - инвертировать его: /.

...