从USB可移动存储中读取文件



在我的应用程序中,我想从USB可移动存储中读取文件我有a.txt,我想阅读它

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时,打开和读取文件时,forv exception

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" />

如果您在Lollipop上运行或以上,则需要在Java代码中询问权限。查看此链接https://stackoverflow.com/a/33162451/7457753

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

这是不可能的不存在文件系统路径。哪个文件:已经告诉您((。然后,您应该返回并停止使用代码。现在,您继续好像什么都没发生。

您最好问或搜索过"如何确定通往USB笔驱动器的路径"。

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

您确定您的设备支持OTG?

此解决方案都不适合我我搜索并找到了这个库

开源库可访问Android上的USB质量存储设备,而无需扎根您的设备

测试并为我工作

相关内容

  • 没有找到相关文章

最新更新