獲取其他程序XML檔複製至指定資料夾
我想要複製其他程序底下的shared_prefs/內的檔案,並複製到一個名為bgyy的檔案, 可是總是報錯? 可否有人幫解決
private void copy()
{
try
{
Process root = Runtime.getRuntime().exec("su");
File sd = Environment.getExternalStorageDirectory();
String path=sd.getPath()+"/bgyy";
File files=new File(path);
//files.mkdir();
if (sd.canWrite()) {
files.mkdir();
File file = new File("/data/data/otherpackagename/shared_prefs/CCC.xml");
File fos = new File("/sdcard/bgyy/CCC.xml");
FileInputStream inStream = new FileInputStream(file);
FileOutputStream outStream = new FileOutputStream(fos);
if(!file.exists()){
// 寫入檔案
int readLen = 0;
byte[] buf = new byte[1024];
while ((readLen = inStream.read(buf)) != -1) {
outStream.write(buf, 0, readLen);
}
//inStream.flush();
inStream.close();
outStream.close();
}
}
}catch(Exception e)
{
e.printStackTrace();
}
XML Java
07-23 08:07:24.583: W/System.err(29841): java.io.FileNotFoundException: /data/data/otherpackagename/shared_prefs/CCC.xml: open failed: EACCES (Permission denied)
07-23 08:07:24.583: W/System.err(29841): at libcore.io.IoBridge.open(IoBridge.java:416)
07-23 08:07:24.583: W/System.err(29841): at java.io.FileInputStream.<init>(FileInputStream.java:78)
07-23 08:07:24.583: W/System.err(29841): at com.XXX.MainActivity.copyDatabase(MainActivity.java:81)
07-23 08:07:24.583: W/System.err(29841): at com.XXX.MainActivity.access$0(MainActivity.java:65)
07-23 08:07:24.583: W/System.err(29841): at com.XXX.MainActivity$1.onClick(MainActivity.java:62)
07-23 08:07:24.583: W/System.err(29841): at android.view.View.performClick(View.java:4084)
07-23 08:07:24.583: W/System.err(29841): at android.view.View$PerformClick.run(View.java:16966)
07-23 08:07:24.583: W/System.err(29841): at android.os.Handler.handleCallback(Handler.java:615)
07-23 08:07:24.583: W/System.err(29841): at android.os.Handler.dispatchMessage(Handler.java:92)
07-23 08:07:24.583: W/System.err(29841): at android.os.Looper.loop(Looper.java:137)
07-23 08:07:24.583: W/System.err(29841): at android.app.ActivityThread.main(ActivityThread.java:4745)
07-23 08:07:24.583: W/System.err(29841): at java.lang.reflect.Method.invokeNative(Native Method)
07-23 08:07:24.583: W/System.err(29841): at java.lang.reflect.Method.invoke(Method.java:511)
07-23 08:07:24.583: W/System.err(29841): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
07-23 08:07:24.583: W/System.err(29841): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
07-23 08:07:24.583: W/System.err(29841): at dalvik.system.NativeStart.main(Native Method)
07-23 08:07:24.583: W/System.err(29841): Caused by: libcore.io.ErrnoException: open failed: EACCES (Permission denied)
07-23 08:07:24.583: W/System.err(29841): at libcore.io.Posix.open(Native Method)
07-23 08:07:24.583: W/System.err(29841): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
07-23 08:07:24.583: W/System.err(29841): at libcore.io.IoBridge.open(IoBridge.java:400)
07-23 08:07:24.583: W/System.err(29841): ... 15 more
[解决办法]
返回/data/data/youPackageName/下的指定名称的文件夹File对象,如果该文件夹不存在则用指定名称创建一个新的文件夹。
sorry 占用了这么多楼层 楼主 不要生气哈