2016-01-10 19 views
0

我有一個簡單的.txt文件,現在只有幾行,每行有一個單詞,然後是逗號,然後是另一個單詞,代表一個非常簡單的用戶名,密碼銀行。出於某種原因,雖然我不能讓文件打開來讀取它。未能打開文件,我連接錯了嗎?或者Android Studio由於某種原因沒有看到它?

這裏是我的代碼,我使用....

try { 
    final String PATH = "src\\main\\assets\\passwords.txt"; 
    Log.w("myApp", "passed"); 
    List<String> user_password = FileUtils.readLines(new File(PATH)); 
    Log.w("myApp", "passed2"); 

    @SuppressWarnings("unchecked") List<Credentials> credentials = (List<Credentials>) CollectionUtils.collect(user_password, new Transformer() { 
     @Override 
     public Object transform(Object input) { 
      String cred = (String) input; 
      String parsed[] = cred.split(","); 
      Log.w("myApp", parsed[0]); 
      return new Credentials(parsed[0], parsed[1]); 
      //return credential; 
     } 
    }); 
    user = (Credentials) CollectionUtils.find(credentials, new Predicate() { 
     @Override 
     public boolean evaluate(Object object) { 
      Credentials c = (Credentials) object; 
      return c.getUserName().equals(userName); 
     } 
    }); 
} catch (IOException e) { 
    System.out.print(e); 
    Log.w("MyApp", "failed"); 
} 

我試圖把password.txt的文件在不同的地方,但似乎並沒有任何工作。

Here's the assets folder with the .txt file in it

回答

0

感謝@CommonsWare我能夠通過使用InputStream實現我正在嘗試做的事情,然後還通過IOUtils讀取列表中的所有內容。

try { 
     InputStream iS = this.getAssets().open("passwords.txt"); 
     List<String> user_password = IOUtils.readLines(iS); 

     @SuppressWarnings("unchecked") List<Credentials> credentials = (List<Credentials>) CollectionUtils.collect(user_password, new Transformer() { 
      @Override 
      public Object transform(Object input) { 
       String cred = (String) input; 
       String parsed[] = cred.split(","); 
       return new Credentials(parsed[0], parsed[1]); 
      } 
     }); 
     user = (Credentials) CollectionUtils.find(credentials, new Predicate() { 
      @Override 
      public boolean evaluate(Object object) { 
       Credentials c = (Credentials) object; 
       return c.getUserName().equals(userName); 
      } 
     }); 
    }catch (IOException e){ 
     System.out.print(e); 
    } 
1

你引用錯在Assets文件夾文件。它必須是水木清華這樣的:

file:///android_asset/myfoldername/myfilename 
你的具體情況

這是file:///android_asset/passwords.txt,但你必須記住,它總是隻讀文件

1
final String PATH = "src\\main\\assets\\passwords.txt"; 

這是行不通的。 Android不是Windows,Android設備不是Windows開發PC。

首先,\是Windows路徑分隔符。在OS X,Linux和Android上,路徑分隔符是/

二,src\main\assets\passwords.txt是您的項目中的一個文件。它不是Android設備文件系統上的文件。

要訪問資產,請使用AssetManager打開InputStream()。您可以通過在任何便利的Context上調用getAssets()來獲得AssetManager,例如您的活動。然後,對於您的資產,請撥打AssetManager上的open("passwords.txt")以獲得InputStream,然後您可以使用它讀取數據。

+0

謝謝...我做了'InputStream stream = this.getAssets()。open(「passwords.txt」);' 'BufferedReader reader = new BufferedReader(new inputStream(stream));' 'String line = reader.readLine();'它成功地打開並閱讀第一行如預期...是否有反正你知道使用FileUtils而不是BufferedReader? – John

+0

@Shane:由於Android SDK中沒有'FileUtils',所以我無法真正幫助你,對不起。 – CommonsWare

相關問題