2013-07-18 2 views
0

Я пытаюсь получить доступ к файлу, используя класс путь, как так:Получение файла в классе пути

String path = getClass().getProtectionDomain().getCodeSource() 
      .getLocation().toString(); 
    File test = new File(path); 
    File table = new File(test, "testFile.xlsx"); 

Я делаю это потому, что мне нужно, чтобы создать Jar, который будет читать и писать в этот файл, если он находится в одной папке.

Я получаю эту ошибку:

java.io.FileNotFoundException: "myFilepath" (The filename, directory name, or volume label syntax is incorrect) 

Если скопировать и вставить MyFilePath в файловом браузере приносит мой файл. Кто-нибудь видит, что я делаю неправильно, или способы улучшить свои методы?

+0

вам нужно уточнить свой вопрос, добавить больше контекста и объяснить намерение, а не только фактическую «вещь», которая должна быть выполнена. (или я сделаю все возможное) –

+0

@DavidHofmann Я получаю доступ к таблице Excel. Я редактирую содержимое этой таблицы. Я сохраняю изменения в этой таблице в исходный файл. Это приложение для не-разработчика. Он должен иметь возможность запускать исполняемый файл, а затем открыть электронную таблицу, чтобы посмотреть на данные. Это все контекст, вместо того, чтобы участвовать в голосовании, я бы очень признателен за понимание. – PandaBearSoup

+0

Итак, вы используете приложение java swing, которое вы распространяете в банке. Это приложение должно открыть файл в файловой системе, где он загружен, изменить файл и сохранить его. Это оно ? –

ответ

0

Вы не можете получить доступ к файлу в своем пути к классам, но вы можете получить поток ресурсов из своего пути к классам и прочитать содержимое из него. Вам нужно посмотреть на этот ответ https://stackoverflow.com/a/1464366/39998

+1

Если я получаю доступ к файлу таким образом, как вы предлагали: InputStream stream = Test.class.getResourceAsStream ("/ SomeTextFile.txt"); Как создать файл FileOutputSteam для записи изменений в этот файл? – PandaBearSoup

+0

Обычно вы читаете содержимое какого-либо файла внутри вашей банки (это то, что мы называем ресурсом). Что именно вы хотите сделать после этого, измените файл внутри банки? –

+0

Этот файл должен быть доступен после выполнения программы. – PandaBearSoup

1

Вместо того чтобы пытаться получить имя пути к классу, создайте объект File, а затем получите его абсолютный путь, используя метод getAbsolutePath(). Это даст путь к исходному файлу, который запускает код.

Пожалуйста, попробуйте следующий код: -

java.io.File f = new java.io.File("H"); 
     String path; 
     path = f.getAbsolutePath(); 
     path = path.substring(0, (path.length() - f.getName().length())); 
     f.deleteOnExit(); 

где строка путь будет содержать свой путь к каталогу файлов классов.

+0

http://stackoverflow.com/questions/2837263/how-do-i-get-the-directory-that-the-currently-executing-jar-file-is-in Я пробовал этот метод и получил тот же ошибка. – PandaBearSoup

+0

Просьба использовать приведенный выше код и посмотреть, есть ли у вас путь к файлу абсолютного класса без имени класса с переменной «путь». –

+1

Это привело меня в папку проекта, файл содержится в файле src/main/resources. Как я могу сделать эту работу при наличии файла в той же папке, что и банку? – PandaBearSoup

Смежные вопросы