2017-04-18 126 views
1

在我的应用我想读取USB移动存储 我有A.TXT一个文件,我想读它读取USB移动存储文件

void read() { 
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE); 
HashMap<String, UsbDevice> deviceList = manager.getDeviceList(); 
Iterator<UsbDevice> deviceIterator = deviceList.values().iterator(); 
StringBuffer sb = new StringBuffer(); 
while (deviceIterator.hasNext()) { 
    UsbDevice device = deviceIterator.next(); 
    String Model = device.getDeviceName(); 

    try { 
     File file = new File(Model + "/a.txt"); 
     if (file.exists()) 
      Toast.makeText(getApplicationContext(), "Exist", Toast.LENGTH_LONG).show(); 
     else 
      Toast.makeText(getApplicationContext(), "Not Exist", Toast.LENGTH_LONG).show(); 

     BufferedReader br = new BufferedReader(new FileReader(Model + "/a.txt")); 
     String sCurrentLine; 

     while ((sCurrentLine = br.readLine()) != null) { 
      textView.append(sCurrentLine + "\n"); 
     } 

    } catch (Exception e) { 
     e.printStackTrace(); 
     Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show(); 
    } 
} 
} 

当检查文件是否存在返回false并打开时,和阅读文件抛出异常

java.io.filenotfoundexception :/dev/bus/001/002/a.txt: opent failed : EACCES (permission denied)

在清单有

<uses-permission android:name="android.permission.USB_PERMISSION" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_MEDIA_STORAGE" /> 
+0

那是什么型号 –

+0

检查出你的路径尝试登录它。与存在的路径进行比较应该是完全一样的 –

+0

'/ dev/bus/001/002/a.txt'。这是一个不可能的非存在文件系统路径。哪个文件:exists()已经告诉你。您应该返回并停止使用您的代码。现在你继续,好像什么都没有发生。 – greenapps

回答

0

什么是你所运行的Android版本..

+0

我测试了android 4和6 – user3441466

0
/dev/bus/001/002/a.txt. 

这是一个不可能的非暴露出来的文件系统路径。哪个文件:exists()已经告诉你。您应该返回并停止使用您的代码。现在你继续,好像什么都没有发生。

你最好问过或'搜索如何确定USB笔驱动器的路径'。

看看getExternalFilesDirs()返回的第二个或第三个项目。

您确定您的设备支持OTG?

+0

我尝试getExternalFilesDirs()而不工作,我的设备支持OTG – user3441466

+0

请告诉我们您从getExternalFilesDirs()获得的路径。告诉你是否使用微型SD卡。如果您显示使用的代码,那将会很好。 – greenapps