如何从Android应用程序中的远程计算机或网络驱动器读取文件

时间:2014-09-03 20:27:19

标签: android file-io

我是Android新手,这是我的第一款应用。我想知道如何从远程计算机读取日志文件。我尝试了以下使用IP地址,但似乎没有用:

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项目的assets文件夹中,我就能读取该文件。但我想从网络驱动器或远程PC访问它,因为日志文件最终会每隔几秒更新一次,我必须不断阅读它。

1 个答案:

答案 0 :(得分:0)

请确保您已向您的应用授予了互联网权限。在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); 

来自documents

使用public StrictMode.ThreadPolicy.Builder permitAll()禁用所有内容的检测。这意味着可以在UI线程上进行网络操作。虽然这可能有效,但在UI线程上运行网络调用是不好的做法。

希望这有帮助。