我正在尝试将文件复制到android中的另一个文件夹,但到目前为止,我没有成功。我设法使用选定的图像和拍照时,而不是文件。
我已经阅读并尝试了社区传递的几种解决方案(通过论坛和互联网搜索),但在复制时没有一个能够解决我的问题。
首先要做的事情。我将权限添加到我的清单中:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
之后,在复制文件之前,我打印其文件路径和目录文件路径:
06-10 11:11:11.700:I / System.out(1442):/ mimetype / storage / sdcard / Misc / Javascript erros for IE.doc中的提交和计划按钮
06-10 11:11:11.710:I / System.out(1442):/ storage / sdcard / files / queue
都存在:
将文件复制到我使用FileUtils的预期文件夹:
try {
FileUtils.copyFile(selectedFile, dir);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
问题是:我没有例外,文件也没有。我试过这个解决方案: How to move/rename file from internal app storage to external storage on Android?
同样的事情,没有例外,但也没有文件。
这就是我获取文件的方式。
Uri uri = data.getData();
File selectedFile = new File(uri.getPath());
File dir = new File(Environment.getExternalStorageDirectory(), "files/queue");
为了获得图像,我这样做:
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
saveChecklistImage(BitmapFactory.decodeFile(picturePath));
当我调用BitmapFactory.decodeFile(picturePath)时,我在这里检索文件,然后,我保存它没有问题。 文件是否也应遵循此标准?
我在这篇文章中找到了一种方法: android get real path by Uri.getPath()
特别是这种方法:
private String getRealPathFromURI(Uri contentURI) {
String result;
Cursor cursor = getContentResolver().query(contentURI, null, null, null, null);
if (cursor == null) { // Source is Dropbox or other similar local file path
result = contentURI.getPath();
} else {
cursor.moveToFirst();
int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
result = cursor.getString(idx);
cursor.close();
}
return result;
我正在用图像做同样的事情,但是以更聪明的方式; D
比我更容易。 谢谢你的帮助答案 0 :(得分:2)
如果参数2是您应该使用copyFileToDirectory的目录。
答案 1 :(得分:0)
copyFile()不会将目录作为第二个参数(请参阅here)。它需要文件(作为源)和文件(作为目标)。首先创建一个空文件:
File file = new File(dir+"/newfile.doc");
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
使用它代替dir。或者用Travis的方式。也可以在文件名中用_替换[space]。