首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在android源代码包中获取子文件夹名称和文件名的列表

在android源代码包中获取子文件夹名称和文件名的列表
EN

Stack Overflow用户
提问于 2015-01-29 03:25:44
回答 2查看 545关注 0票数 2

我正在开发一个android应用程序,它存储sql文件以更新sqlite数据库。当用户按下某些按钮时,该sql脚本将运行。这就是我把sql文件放在这里的地方。

到目前为止,我一直在使用这个解决方案来运行我的脚本:首先,将我的更新映射为update.xml资源

代码语言:javascript
复制
<resources>    

    <string name="update_list">
        v2_9_11
    </string>

    <string-array name="v2_9_11">
        <item>1_AlterTable_wapactivity</item>
    </string-array>

</resources>

并使用以下方法在文件中获取sql脚本:

代码语言:javascript
复制
private void runScript(String version_name){
        try{
            String[] sql_list = mGap.getResources().getStringArray(getArrayIdentifier(mGap, version_name));
            for (String sql : sql_list) {
                InputStream in =  getClass().getResourceAsStream("/com/ods/scm/script/update/"+version_name+"/"+sql+".sql");
                Reader fr = new InputStreamReader(in, "utf-8");
                BufferedReader br = new BufferedReader(fr);
                String s="";
                String baris;
                while((baris=br.readLine())!=null){
                    s+=baris;
                 }
                mDbHelper.executeStatement(s);
            }
            insertUpdate(version_name);
        }
        catch(Exception e){
            System.out.println(e.getMessage());
        }
    }

我从version_name获得字符串sql_list文件名和字符串sql_list文件名。问题是,我希望获得version_name (在本例中,v2_9_11作为文件夹更新的子文件夹名)和sql文件名(在本例中是1_AlterTable_wapactivity.sql ),而不将其映射到update.xml中。你能帮我吗?

编辑

或者,有人能指导我在构建应用程序时如何自动将它映射到update.xml吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-02 05:52:47

对不起,我刚才把它交了赏金,但我能在我交了赏金后的短时间内自己解决它。无论如何,我的解决方案是将android设备中的apk文件(data/app/.apk)作为压缩流打开。然后列出以com/ods/scm/script/update开头的所有文件。在这里,我的方法获取所有从它开始的文件:

代码语言:javascript
复制
public ArrayList openApk(String filePath){
  ArrayList<String> list = new ArrayList<String>();
  FileInputStream fis = null;
  ZipInputStream zipIs = null;
  ZipEntry zEntry = null;
  try {
      fis = new FileInputStream(filePath);
      zipIs = new ZipInputStream(new BufferedInputStream(fis));
      while((zEntry = zipIs.getNextEntry()) != null){
        if(zEntry.getName().startsWith("com/ods/scm/script/update/"))
          list.add(zEntry.getName());
      }
      zipIs.close();
  } catch (FileNotFoundException e) {
      e.printStackTrace();
  } catch (IOException e) {
      e.printStackTrace();
  }
  return list;
}
票数 1
EN

Stack Overflow用户

发布于 2015-02-02 03:00:46

我建议您将.sql文件放在assets文件夹中。通过这样做,您可以使用file自由地操作您的文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28206507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档