我使用的是运行stock TouchWiz 4.4.2的三星galaxy Note II(未根目录)。我的手机支持micro-USB-OTG并且我可以将我的USB挂载为rwxrwx--x而不需要根。我的USB的完整路径是/Storage/USBDriveA。
我尝试使用Environment.getExternalStorageDirectory()获取路径或直接使用路径(上面提到过),但都没有成功。第一个返回内部存储路径,第二个返回带有“权限被拒绝”的错误。我已经把
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
所以我想知道为什么我的代码不能工作。
File file = new File(path.getAbsolutePath(), "test.txt");
// File file = new File("/storage/extSdCard","test.txt");
err = false;
try {
FileOutputStream f = new FileOutputStream(file);
PrintWriter pw = new PrintWriter(f);
pw.print(get);
pw.flush();
pw.close();
f.close();
}catch (Exception e) {
e.printStackTrace();
Toast.makeText(MainActivity.this, "writing error",Toast.LENGTH_LONG).show();
err = true;
}
Log.i("File Path:", file.getPath());
提前致谢!!!
从Android4.4中,您可以使用存储访问框架访问可移动介质(参见https://commonsware.com/blog/2014/04/09/storage-sociate-removable-storage.html)。例如,我成功地尝试将一个pdf文件从本地内存复制到由OTG适配器连接的可移动内存中。唯一的限制:用户必须选择目标文件夹。
1)调用intent.action_create_document:
Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intent.setType("application/pdf");
intent.putExtra(Intent.EXTRA_TITLE, file.getName());
startActivityForResult(intent, REQUEST_CODE);
2)拦截返回意图
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if(requestCode == REQUEST_CODE) {
if (resultCode != RESULT_OK) return;
copyFile(fileToCopy, data.getData());
}
}
private void copyFile(File src, Uri destUri) {
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(new FileInputStream(src));
bos = new BufferedOutputStream(getContentResolver().openOutputStream(destUri));
byte[] buf = new byte[1024];
bis.read(buf);
do {
bos.write(buf);
} while(bis.read(buf) != -1);
} catch (NullPointerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (bis != null) bis.close();
if (bos != null) bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
我使用的是Android5.0设备,其中usb大容量存储器通过usb OTG电缆挂载在“/storage/usbotg”上。不幸的是,从我的应用程序,我只有读取访问该文件夹。请注意,我设置了写入外部存储权限,因为我可以写入设备存储。 异常消息:拒绝访问路径“/storage/usbotg/newfolder”。 如果我使用: 一切工作正常,“NewFolder”已经创建。 谢谢你的帮助
我正在开发一款支持USB OTG的android手机。
我想先写串口。为此,我使用usb到串行ftdi电缆。电缆连接到COM4。运行64位Windows 7 a) 使用RXTX项目。http://rxtx.qbang.org/wiki/index.php/Main_Page 为了使用RXTX,我试着按照这些说明去做 下载rxtx-2.1-7-bins-r2。zip 解压缩它 复制RXTX序列。dll转换为c:\program files\java\jr
问题内容: 我在python中遇到以下问题。 我需要并行执行一些计算,这些计算的结果需要按顺序写入文件中。因此,我创建了一个函数,该函数接收和文件句柄,进行计算并将结果打印到文件中: 但是脚本运行后文件最终为空。我试图将worker()函数更改为: 并将文件名作为参数传递。然后它按我的预期工作。当我尝试按顺序执行相同的操作而不进行多处理时,它也可以正常工作。 为什么它在第一个版本中不起作用?我看不
问题内容: 我有一个连接到Android设备的外部大容量存储设备。在根目录中,有几个.BIN文件需要读取到我的应用程序中。我能够连接到设备并使用UsbDeviceConnection接收USB许可。 连接后,我可以看到我有一个带有2个批量传输端点的大容量存储接口(一进一出)。 当使用usbConnection.bulkTransfer时,我收到-1返回和一个空缓冲区。因此,我在接收数据时遇到了麻烦
问题内容: 我正在使用opencsv,并希望通过多个会话写入文件。但是,每次我启动新的CSVWriter时,旧文件都会被删除。我可以更改CSVWriter的行为以在文件末尾写入而不是替换文件吗? 问题答案: FileWriter中有一个选项而不是CSVWriter可以附加在文件末尾。 此代码使其工作: