2014-12-04 5 views
0

У меня есть функция, которая загружает файл config.properties из основной папки проекта, однако она дает мне исключение FileNotFoundException, и я понятия не имею, почему. Мой метод выглядит следующим образом:Файл не найден в папке проекта

public static Configfile configuration() { 
     String server = null; 
     int dbport = 0; 
     String dbuser = null; 
     String dbpass = null; 

     Properties prop = new Properties(); 
     InputStream input = null; 

     try { 
      input = new FileInputStream("config.properties"); 
      prop.load(input); 

      server = prop.getProperty("server"); 
      dbport = Integer.parseInt(prop.getProperty("dbport")); 
      dbuser = prop.getProperty("dbuser"); 
      dbpass = prop.getProperty("dbpassword"); 
     } catch (IOException ex) { 
      ex.printStackTrace(); 
     } finally { 
      if (input != null) { 
       try { 
        input.close(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
     return new Configfile(server, dbport, dbuser, dbpass); 
    } 

И мой файл config.properties в:

E: \ Android \ NSomething5

Что мне не хватает?

EDIT: StackTrace:

12-04 17:00:07.619: W/System.err(21368): java.io.FileNotFoundException: /config.properties: open failed: ENOENT (No such file or directory) 
12-04 17:00:07.619: W/System.err(21368): at libcore.io.IoBridge.open(IoBridge.java:416) 
12-04 17:00:07.619: W/System.err(21368): at java.io.FileInputStream.<init>(FileInputStream.java:78) 
12-04 17:00:07.619: W/System.err(21368): at java.io.FileInputStream.<init>(FileInputStream.java:105) 
12-04 17:00:07.619: W/System.err(21368): at com.example.nsomething.utils.DBOperations.configuration(DBOperations.java:122) 
12-04 17:00:07.619: W/System.err(21368): at com.example.nsomething.utils.DBOperations.<init>(DBOperations.java:24) 
12-04 17:00:07.619: W/System.err(21368): at com.example.nsomething.Report.<init>(Report.java:20) 
12-04 17:00:07.619: W/System.err(21368): at java.lang.Class.newInstanceImpl(Native Method) 
12-04 17:00:07.619: W/System.err(21368): at java.lang.Class.newInstance(Class.java:1319) 
12-04 17:00:07.619: W/System.err(21368): at android.app.Instrumentation.newActivity(Instrumentation.java:1071) 
12-04 17:00:07.619: W/System.err(21368): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2162) 
12-04 17:00:07.619: W/System.err(21368): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2295) 
12-04 17:00:07.619: W/System.err(21368): at android.app.ActivityThread.access$700(ActivityThread.java:150) 
12-04 17:00:07.619: W/System.err(21368): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1280) 
12-04 17:00:07.619: W/System.err(21368): at android.os.Handler.dispatchMessage(Handler.java:99) 
12-04 17:00:07.619: W/System.err(21368): at android.os.Looper.loop(Looper.java:137) 
12-04 17:00:07.619: W/System.err(21368): at android.app.ActivityThread.main(ActivityThread.java:5279) 
12-04 17:00:07.619: W/System.err(21368): at java.lang.reflect.Method.invokeNative(Native Method) 
12-04 17:00:07.619: W/System.err(21368): at java.lang.reflect.Method.invoke(Method.java:511) 
12-04 17:00:07.619: W/System.err(21368): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 
12-04 17:00:07.619: W/System.err(21368): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 
12-04 17:00:07.619: W/System.err(21368): at dalvik.system.NativeStart.main(Native Method) 
12-04 17:00:07.619: W/System.err(21368): Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory) 
12-04 17:00:07.619: W/System.err(21368): at libcore.io.Posix.open(Native Method) 
12-04 17:00:07.619: W/System.err(21368): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110) 
12-04 17:00:07.619: W/System.err(21368): at libcore.io.IoBridge.open(IoBridge.java:400) 
12-04 17:00:07.619: W/System.err(21368): ... 20 more 
+0

'файл из основной папки функции' ?? Извините, я не знаю, что у функций есть папки. Пожалуйста, объясни. – greenapps

+0

Как вы управляете этим кодом и откуда? –

+0

Если вы используете Java 7, используйте try-with-resources и java.nio.file. 'FileNotFoundException' бесполезен. Отправьте трассировку стека, чтобы мы могли сделать _sure_, что файл действительно отсутствует, а не не имеет доступа к нему и т. Д. – fge

ответ

2

FileInputStream загружает файл из абсолютного пути или по отношению к текущему рабочему каталогу. Теперь абсолютный путь не относится к вашему примеру. Таким образом FileInputStream ищет файл config.properties в текущем рабочем каталоге. Обычно этот каталог является тем, из которого вы запускали программу. Если вы делаете это на Android, поместите свой файл конфигурации в папку «Те активы» и используйте функции API активов для загрузки файла в виде потока. Если это автономная java-программа, поместите файл в путь к классам и используйте файл loadload.getResourceAsStream для загрузки файла. Наконец, если вы знаете, что абсолютный путь к файлу использует его напрямую.

+0

Я делаю это на Android, могу вы уточните, пожалуйста? – MrSilent

1
E:\Android\NSomething5 

это не правильный путь для Android файловой системы. Это путь к Windows. Приложение на вашем устройстве не имеет ничего общего с файлами на вашем компьютере.

Поместите свой файл конфигурации в папку активов вашего проекта. Затем во время выполнения используйте agentmanager для открытия InputStream и чтения из него. В остальном вы можете использовать тот же код. Только открытие InputStream отличается.

+0

Я не сказал, что это путь к файловой системе Android, то есть путь к Windows, где находится мой файл. Я попытался поместить его в папку «Assets» и вызывать свой код как «/asset/config.properties», но он не работает. Спасибо за ваш ответ. – MrSilent

+0

нет нет. Не нравится «/asset/config.properties» «Это не работает. Посмотрите эту ссылку, чтобы получить пример кода ... http: //stackoverflow.com/questions/7103757/how-to-get-the-file-properties-in-assets-folder-on -android – Nazgul

+0

@Nazgul Что значит? – MrSilent