2015-08-04 3 views
0

У меня есть файл excel, который я сохранил в подпапке моего основного пакета. Я хочу прочитать этот файл. Когда я прочитал его с помощью InputStream, файл легко обнаруживается, но когда я читаю с использованием FileInputStram или File file = new File(filepath), я получаю сообщение об ошибке, что файл не найден.Не удается найти файл, хранящийся внутри проекта

Может ли кто-нибудь помочь мне в чтении файла, используя FileInputStram или File file = new File(filepath)?

код, что я написал, чтобы прочитать файл является

File file = new File("upgradeworkbench/Resources/workbookOut.xlsm"); 

и

FileInputStream inp = new FileInputStream("upgradeworkbench/Resources/workbookOut.xlsm"); 

Я попытался с / в начале пути, но все же это не сработало.

+0

Его полотно или простой проект Java ? –

+0

Его простой проект java. Но мне нужно запустить тот же код, используя jar. Поэтому, чтобы читать файлы внутри банки, я должен хранить файлы внутри пакета. –

+0

попробуйте ./ в начале. –

ответ

0

При работе с классом File вам необходимо указать абсолютный или относительный путь. Абсолютный путь - это полный путь к файлу, например. C:\workbookOut.xlsm

В относительных дорогах существует понятие working directory, и оно представлено a. (точка), и все остальное относительно этого.

Попробуйте либо дать полный путь, либо относительный путь.

File file = new File("./upgradeworkbench/Resources/workbookOut.xlsm"); 
+0

Он по-прежнему не работает. Все-таки такое же исключение :( –

+0

какая операционная система вы используете? – dogant

+0

Windows 7 jre 1.8 –

0

Если ваш файл в пути к классам, то попробуйте ниже кода

package mypack; 

import java.io.*; 

public class TestPath 
{ 

    public static void main(String[] args) throws Exception 
    { 
     InputStream stream = Test.class.getResourceAsStream("/workbookOut.xlsm"); 
     System.out.println(stream != null); 
     stream = Test.class.getClassLoader() 
      .getResourceAsStream("workbookOut.xlsm"); 
     System.out.println(stream != null); 
    } 
} 
+0

Я не хочу использовать 'InputStream'. Я хочу работать с файлом –

+0

, а затем использовать 'classLoader' –

+1

Когда файл существует в JAR, вы не можете легко получить файл. Вы можете получить к нему доступ только как ресурс. Если вы все еще хотите работать с файлом FILE (я не понимаю, почему), сделайте копию его в файл temp и используйте его. – KDM

0

Если ваш файл в одном пакете, то используйте строку ниже он будет работать

URL url = getClass().getResource("workbookOut.xlsm"); 

File file =new File(url.getPath()); 
+0

мой файл находится в различном пакете, тогда мой класс. –

+0

ОК, то просто используйте URL url = getClass(). GetResource ("./ workbookOut.xlsm"); добавлять точки до слэш зависит от местоположения файла. –

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