当前位置: 首页 > 知识库问答 >
问题:

Android路径内部存储

公孙志
2023-03-14
File sd = Environment.getExternalStorageDirectory();
            File data = Environment.getDataDirectory();
           FileChannel source=null;
           FileChannel destination=null;
           String cartella = (getString(R.string.app_name));
           String currentDBPath = "/data/"+getPackageName()+"/cartella/"+"Backup.db";
           String backupDBPath = "/cartella/Backup.db";

           File currentDB = new File(data, currentDBPath);
           File backupDB = new File(sd, backupDBPath);
           try {
                source = new FileInputStream(currentDB).getChannel();
                destination = new FileOutputStream(backupDB).getChannel();
                destination.transferFrom(source, 0, source.size());
                source.close();
                destination.close();
                Toast.makeText(this, "DB Exported!", Toast.LENGTH_LONG).show();
            } catch(IOException e) {
                e.printStackTrace();
                  Toast toast = Toast.makeText(getApplicationContext(),(R.string.Toast_export_errore), Toast.LENGTH_SHORT);
                     toast.show();
01-20 08:55:14.757: W/System.err(1383): java.io.FileNotFoundException: /data/data/info.androidhive.slidingmenu/cartella/Backup.db: open failed: ENOENT (No such file or directory)

01-20 08:55:14.787:W/System.err(1383):at libcore.io.iobridge.open(iobridge.java:409)01-20 08:55:14.787:W/System.err(1383):at java.io.fileInputStream.(fileInputstream.java:78)01-20 08:55:14.827:W/System.err(1383):at main.impostazioni.esporta(impostazioni.java:334)01-20 2008:55:14.827:W/System.err(1383):at java.lang.reflect.Method.invoke(Method.java:525)01-2008:55:14.827:W/System.err(1383):at Android.view.view.view$1.onclick(View.java:3628)01-2008:55:14.857:W/System.err(1383):at Android.view.view.performClick(View.java:4240)01-2008:55:14.857:W/System.err(1383):at 55:14.877:W/System.err(1383):at Android.os.handler.handleCallback(handler.java:730)01-20 08:55:14.877:W/System.err(1383):at Android.os.handler.dispatchMessage(handler.java:92)01-20 08:55:14.887:W/System.err(1383):at Android.os.looper.loop(looper.java:730)137)01-20 08:55:14.898:W/System.err(1383):at android.app.activitythread.main(activitythread.java:5103)01-20 08:55:14.927:W/System.err(1383):at java.lang.reflect.Method.invokenative(本机方法)01-20 08:55:14.927:W/System.err(1383):at java.lang.reflect.Method.invoke(525)01-20 08:55:14.957:W/System.err(1383):at scaller.run(zygoteinit.java:737)01-20 08:55:14.957:W/system.err(1383):at com.android.internal.os.zygoteinit.main(zygoteinit.java:553)01-20 08:55:14.987:W/system.err(1383):at dalvik.system.nativestart.main(本机方法)01-20 08:55:14.987:W/system.err(1383):by:libcore.io.errnoexception:open failed:ENOENT

共有1个答案

姬凡
2023-03-14

尝试替换:

File currentDB = new File(data, currentDBPath);

与:

File currentDB = getDatabasePath("Backup.db");

硬编码数据库路径不是一个好主意,因为它不能保证在所有设备上都是相同的。使用getDatabasePath()将返回创建数据库的路径。因此,如果数据库确实存在,将返回正确的路径。

source = new FileInputStream(backupDB).getChannel();
destination = new FileOutputStream(currentDB).getChannel();
 类似资料:
  • 大多数新的android设备都有一个内部sdcard和一个外部sdcard。我想做一个文件资源管理器应用程序,但我不能找到如何获得路径使用在我的应用程序,因为 在大多数设备中只返回,但另一个外部sdcard有另一个路径,如。感谢任何帮助。

  • 我开始在Delphi XE5中为android开发应用程序,遇到了一些问题。 我真的不懂怎么找路。在我设置了写入和读取外部存储的权限后,我尝试获取路径,以便查看我将创建的文件保存在何处,我得到的结果如下: 对于系统。尤蒂尔斯。第四- 据我从其他主题了解,GetDocumentsPath应该是默认的sdcard路径,下载应该是sdcard/Downloads,但它使用/Android/data/ap

  • 本文向大家介绍Android获取SD卡路径及SDCard内存的方法,包括了Android获取SD卡路径及SDCard内存的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android获取SD卡路径及SDCard内存的方法。分享给大家供大家参考。具体分析如下: 昨天在研究拍照后突破的存储路径的问题,开始存储路径写死为: private String folder = "/sdcard/

  • 我正在使用以下代码获取通过OTG连接的所有外部存储设备(SDCard或USB)的列表 它读取所有设备中的sdcard,但在某些设备中检测到USB 我该用什么?

  • 我想打开文件管理器的一个按钮,点击,并想要获得一个特定项目的路径,选择该特定项目。

  • 当我每次运行我的应用程序时,versionName在清单文件中会递增。20389是旧版本名,20390是增量数。 项目的成功构建就像成功构建一样。但问题是为什么Android studio会缓存以前的apk版本。以下是错误: 目标设备:lge-nexus_5-061642fd00511249上载文件本地路径:h:\customfolder\app\build\outputs\apk\myappna