java.io.IOException: система не может найти указанный путь - PullRequest
0 голосов
/ 13 сентября 2011

Я пытаюсь открыть файл, который я только что создал в своем коде (поэтому я уверен, что файл существует)

Код выглядит так:

File file = new File(filename);
file.createNewFile();
BufferedWriter bw = new BufferedWriter(new FileWriter(file));
...
bw.close();

try {
    Desktop desktop = null;
    if (Desktop.isDesktopSupported()) {
        desktop = Desktop.getDesktop();
    }
    desktop.open(file);
} catch (Exception e) {
    ...
}

Но какВ заголовке говорится, что я получаю «исключение java.io.IOException: система не может найти указанный путь» из istruction desktop.open (file).Несомненно, проблема заключается в том, что путь к файлу содержит пробелы (которые переводятся в «% 20»).Есть ли способ избежать этого?

Ответы [ 5 ]

2 голосов
/ 14 сентября 2011

Я нашел реальную проблему.Это был не% 20, как я предполагал.У меня просто не было привилегий для прямого доступа к местоположению файла.Это немного сложно объяснить ... мне просто жаль, что я не могу разобраться в реальной проблеме раньше.

Спасибо за ваши предложения в любом случае!

1 голос
/ 13 сентября 2011

Попробуйте открыть другой файл с другими приложениями и посмотреть, поддерживаются ли другие типы файлов.Как сказал Clarisse, IOException выбрасывается из метода «open», если указанный файл не имеет связанного приложения или связанное приложение не запускается.Если указанный файл не существует, генерируется IllegalArgumentException, чего нет в вашем случае.Если по какой-то причине открытие CSV-файла с помощью Desktop не работает для вас, попробуйте использовать подход krslynx.То же самое можно найти здесь .Вы можете быстро собрать тестовое приложение для открытия чего-либо на вашем компьютере, используя найденный код здесь

1 голос
/ 13 сентября 2011

Вы используете IDE?Что находится внутри переменной 'filename' (это фактическое содержимое).Вторая строка не нужна.

Ошибка из трассировки стека, указывающая на BufferedWriter bw = new BufferedWriter(new FileWriter(file)); или desktop.open(file);

РЕДАКТИРОВАТЬ:

Вы также можете попробовать следующий код

File myCSVFile; //reference to your csv file here 
String execString = "excel " + myCSVFile.getAbsolutePath();
Runtime run = Runtime.getRuntime();
try {
    Process pp = run.exec(execString);
} catch(Exception e) {
    e.printStackTrace();
}

Ошибка java.io появляется, потому что не удается открыть файл.Приведенный выше код заставит Excel открыть ваш файл в качестве аргумента.Вам необходимо установить переменную среды, чтобы команда «excel» в командной строке открывала приложение Excel.

Если вы планируете выпустить это приложение для использования, вы можете убедиться, что Excel установлен, проверив реестр, а затем проверив место установки Excel оттуда.

0 голосов
/ 13 сентября 2011

Как говорит krslynx, file.createNewFile () не нужен.Однако вместо этого может понадобиться file.mkdirs (), если промежуточные каталоги еще не существуют.

РЕДАКТИРОВАТЬ: из вашего вопроса не ясно, происходит ли это в новом FileWriter () или в Desktop.open ().Пожалуйста, уточните.

0 голосов
/ 13 сентября 2011

В настольном javadoc написано:

IOException - if the specified file has no associated application or the associated application fails to be launched 

Так вы уверены, что с вашим типом файла связано приложение по умолчанию?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...