2014-09-03 58 views
0

我是Android新手,這是我的第一個應用程序。我想知道如何從遠程機器讀取日誌文件。我嘗試以下使用的IP地址,但似乎並沒有工作:如何在Android應用程序中從遠程機器或網絡驅動器讀取文件

try 
{ 
    URL url = new URL("`http://10.0.161.72/C:/adsb.log`"); 
    BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream())) 
    //... 
} 

該文件還可以通過網絡驅動器訪問。我嘗試了下面的代碼,它在Java中工作,但不是Android。

try 
{ 
    File file = new File("T:\\AN\\3.00\\adsb.log"); 
    BufferedReader br = new BufferedReader(new FileReader(file)); 
} 

如果我複製日誌文件並將其放置在我的android項目的資產文件夾中,我可以讀取該文件。但我想從網絡驅動器或遠程PC訪問它,因爲日誌文件最終會每隔幾秒更新一次,我必須不斷閱讀它。

回答

0

請確保你已經給互聯網允許您app.In你AndroidManifest.xml使用本

<uses-permission android:name="android.permission.INTERNET"/> 

來到日誌/文件從URL抓取,你應該記住這一點的是,Android系統保護長在UI(用戶界面)線程中阻止使用Internet來防止應用程序無響應。要在主線程上正確下載文件,您需要使用某種異步線程來下載文件並對主線程進行回調以處理它。我建議您使用AsynTask

然而速戰速決,你可以添加這段代碼裏面onCreate()

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 

StrictMode.setThreadPolicy(policy); 

從使用public StrictMode.ThreadPolicy.Builder permitAll()documents

禁用everything.Which的檢測手段對UI線程的網絡操作可儘管這可能起作用,但在UI線程上運行網絡調用是不好的做法。

希望這會有所幫助。

+0

感謝您的回覆。我會看到它最終使用AsyncTask。現在,我將快速修復添加到了onCreate(),並且我已經提供了Internet權限,但仍然無法讀取該文件。 – Aparna 2014-09-03 21:21:00

+0

你可以請嘗試引用[這個答案](http://stackoverflow.com/questions/2922210/reading-text-file-from-server-on-android)和[本教程](http:// android- er.blogspot.in/2011/04/read-text-file-from-internet-using-java.html),看看你是否能找到你錯在哪裏。 – 2014-09-03 21:42:47

相關問題