首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android -媒体扫描仪问题

Android -媒体扫描仪问题
EN

Stack Overflow用户
提问于 2014-01-23 21:01:35
回答 1查看 381关注 0票数 0

我正在研究一种将SQLite数据库表导出到特定目录中的csv文件的方法。我已经把所有的事情都安排好了,只是当我把手机插到我的电脑里时,我很难找到这个文件。我可以在我的手机上看到文件夹和文件,但不在我的电脑上。我正在使用MediaScannerConnection.scanfile方法,但仍然无法让我的计算机定位文件夹和文件。我添加了一个OnCompleted侦听器,它在logcat中返回正确的目录路径,但我仍然无法在计算机上看到它。我知道重新启动会迫使一个完整的重新扫描,但我并不是我的用户我的应用程序,必须这样做,每次。我会在下面贴出源代码。提前谢谢你的帮助。

GameView.java:

代码语言:javascript
运行
复制
case R.id.exportCSV:
            gameView.open();
            boolean export = gameView.exportTable(game);
            gameView.close();
            if(export = true){
                Toast t = Toast.makeText(getApplicationContext(), "CSV file saved to /Statbook CSV Files Folder", Toast.LENGTH_SHORT);
                t.show();
                MediaScannerConnection.scanFile(GameView.this, new String[] {Environment.getExternalStorageDirectory().toString()+"/Statbook CSV Files"}, null, new MediaScannerConnection.OnScanCompletedListener() {

                    @Override
                    public void onScanCompleted(String arg0, Uri arg1) {
                        // TODO Auto-generated method stub
                        Log.i("External Storage", "Scanned " + arg0 + ":" + "-> uri=" + arg1);
                    }
                });

exportTable方法:

代码语言:javascript
运行
复制
public boolean exportTable(String fileName) {
        // TODO Auto-generated method stub
        boolean result = true;
        String csvHeaders = "id, Player Number, Player Name, 2 Pointers Made, 2 Pointers Missed, Total 2 Pointers," +
                "3 Pointers Made, 3 Pointers Missed, Total 3 Points, Free Throws Made, Free Throws Missed," +
                "Total Free Throws, Offensive Rebounds, Defensive Rebounds, Assists, Fouls, Turnovers," +
                "Blocks, Steals";
        String csvValues = "";

        try {
            File myDir = new File(Environment.getExternalStorageDirectory()+"/Statbook CSV Files");
            if(!myDir.exists()){
                myDir.mkdir();
            }
            File outFile = new File(Environment.getExternalStorageDirectory()+"/Statbook CSV Files",fileName+".csv");
            FileWriter writer = new FileWriter(outFile);
            BufferedWriter out = new BufferedWriter(writer);
            Cursor C = ourDatabase.query(fileName, null,null, null, null, null, null);
            if (C != null) {
                out.write(csvHeaders);
                out.newLine();
                C.moveToFirst();
                while(!C.isAfterLast()){
                    for (int i = 0; i < C.getColumnCount(); i++) {
                        csvValues += C.getString(i) + ",";
                    }
                    out.write(csvValues);
                    out.newLine();
                    csvValues = "";
                    C.moveToNext();
                }
                out.close();
                result = true;
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            result = false;
            e.printStackTrace();
        }
        return result;
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-25 17:23:41

我找到了问题的原因。在MediaScannerConnection.scanfile中,我只是将路径传递到存储文件的目录,而不是文件本身的路径。在把这一点加到路径的末尾之后,一切都很顺利。

更新的MediaScannerConnection:

代码语言:javascript
运行
复制
MediaScannerConnection.scanFile(GameView.this, new String[] {Environment.getExternalStorageDirectory().toString()+"/Statbook CSV Files/"+game+".csv"}, null, new MediaScannerConnection.OnScanCompletedListener() {

                    @Override
                    public void onScanCompleted(String arg0, Uri arg1) {
                        // TODO Auto-generated method stub
                        Log.i("External Storage", "Scanned " + arg0 + ":" + "-> uri=" + arg1);
                }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21319210

复制
相关文章

相似问题

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