将文件复制到外部SD卡android
我无法将文件复制到外部SD卡。没有显示任何错误,实际上显示成功,但文件不在sd卡上。代码如下:将文件复制到外部SD卡android,android,cordova,Android,Cordova,我无法将文件复制到外部SD卡。没有显示任何错误,实际上显示成功,但文件不在sd卡上。代码如下: window.resolveLocalFileSystemURI(fileURI, step1,fail); function step1(tmp_file) { file = tmp_file; window.resolveLocalFileSystemURI("file:///mnt/extsd", step2,fail); //resolve destinaion
window.resolveLocalFileSystemURI(fileURI, step1,fail);
function step1(tmp_file)
{
file = tmp_file;
window.resolveLocalFileSystemURI("file:///mnt/extsd", step2,fail); //resolve destinaion
}
function step2(destination)
{
file.moveTo(destination,"example.jpg",move_success, move_fail);
}
因此,最终它称之为移动成功
注意:如果我从'file:///mnt/extsd'到内部SD卡路径'file:///mnt/sdcard“
清单中的权限
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
您应该构建路径,而不是将其定义为默认路径,因为并非在所有设备中SD卡都被称为“SD卡”,例如,我有一个Chinese平板电脑,它有两个SD卡插槽,因此我必须使用路径“SD卡2”,您可以这样做:
File sdcard = Environment.getExternalStorageDirectory();
String path = "file://"+sdcard.getAbsolutePath();
然后可以使用变量
window.resolveLocalFileSystemURI(path, step2,fail); //resolve destinaio
或者,您可以使用此方法复制文件:
public void copy(File src, File dst) throws IOException {
try {
InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dst);
// Transfer bytes from in to out
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
} catch (IOException io) {
Toast.makeText(this, "Error: " + io, Toast.LENGTH_LONG).show();
}
}
您可以复制文件,然后快速删除它
或者作为另一种选择,您可以使用文件的属性renameTo(),
例如:
File sdcard = Environment.getExternalStorageDirectory();
File example= new File(sdcard.getAbsolutePath()+"/example.txt");
File newpath= new File(sdcard.getAbsolutePath()+"/examplefolder/example.txt");
example.renameTo(newpath);//this will move the file to the new path
您是否具有写入外部存储的权限???我在清单文件中有这样一个权限:当您使用file.moveTo()时,您没有复制文件。档案可以移动吗?它在哪里?@greenapps-实际上我想复制文件,但我是从移动开始的。如果我尝试将文件移动到内部SD卡,它会起作用,但如果我设置到外部SD卡的路径,它将不起作用。我明白这一点。但是文件是从哪里来的呢?为什么不使用copyTo()?您使用哪个Android版本?my'Environment.getExternalStorageDirectory();'获取内部卡“mnt/sdcard”的路径检查其他备选方案