读取USB移动存储文件(read file from usb removable storage)

2019-09-29 21:53发布

在我的应用我想读取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,并打开和读取文件抛出异常时

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

Answer 1:

如果你在上面运行的棒棒糖你要问在Java代码中的权限。 看看这个链接https://stackoverflow.com/a/33162451/7457753



Answer 2:

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

这是一个不可能的非暴露出来的文件系统路径。 哪个文件:存在()已经告诉你了。 您应该返回然后与你的代码停止。 现在你继续仿佛什么都没有发生。

你最好问或GOOGLE上搜索“如何确定路径U盘”。

那么来看看由归国第二或第三项getExternalFilesDirs()

你肯定你的设备支持OTG?



Answer 3:

没有这个解决方案为我工作的我搜索,发现这个库

开源库在Android上访问USB大容量存储设备,而不生根您的设备

测试工作对我来说



文章来源: read file from usb removable storage