我试图将我的应用程序数据库从存储数据复制到任何其他仓库
但是我遇到了一些错误。
我的设备已扎根,我已经使用了Google Play的许多应用来导航到数据/数据,但它为空,我使用了以下代码:
public void backup() {
try {
File sdcard = Environment.getRootDirectory();
File outputFile = new File(sdcard,
"YourDatabase.db");
if (!outputFile.exists())
outputFile.createNewFile();
File data = Environment.getDataDirectory();
File inputFile = new File(data,
"data/"+LoginActivity.this.getPackageName()+"/databases/"+"HafilTC.db");
InputStream input = new FileInputStream(inputFile);
OutputStream output = new FileOutputStream(outputFile);
byte[] buffer = new byte[1024];
int length;
while ((length = input.read(buffer)) > 0) {
output.write(buffer, 0, length);
}
output.flush();
output.close();
input.close();
} catch (IOException e) {
e.printStackTrace();
throw new Error(e.toString());
}
android mainfilfist:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
错误日志:
02-11 18:38:16.213: E/AndroidRuntime(21338): java.lang.Error: java.io.IOException: open failed: EROFS (Read-only file system)
最佳答案
问题是Environment.getRootDirectory()
不返回SD卡的根目录。它返回无法写入的根OS目录。
相反,您应该使用Environment.getExternalStorageDirectory()
,它将返回用户外部存储目录的根目录(取决于设备,该目录可能是SD卡,也可能不是SD卡)。