PC中无法访问Android中的公共文件,但文件夹无法访问

时间:2017-07-10 18:56:24

标签: android file directory android-external-storage android-mediascanner

我正在尝试为我的应用创建一些公共文件夹以保存一些数据。 我的目标是创建一个主文件夹和一个基于当前日期命名的子文件夹,以便保存我的数据。数据应该可以通过PC访问。 问题是,当我通过手机[图像1](使用蓝牙文件传输应用程序)访问文件时一切正常,电脑无法识别子文件夹[图像2]。

[图片1]所有在移动设备上工作 Image 1

[图像2] PC上无法识别子文件夹 enter image description here

我看了很多答案,尝试了很多,但还没有找到解决方案。 我的代码是:

public void createFile() {
    calendar_time = Calendar.getInstance(Locale.getDefault());
    int hour = calendar_time.get(Calendar.HOUR_OF_DAY);
    int minute = calendar_time.get(Calendar.MINUTE);
    int second = calendar_time.get(Calendar.SECOND);
    String time=String.valueOf(hour)+":"+String.valueOf(minute)+":"+String.valueOf(second);
    String sFileName=date+" "+time+" Part "+String.valueOf(file_counter)+".txt";

    try {
        File root = new File(Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_DOCUMENTS), "Main folder/"+date);
        if (!root.exists()) {
            root.mkdirs();
        }

        root.setExecutable(true);
        root.setReadable(true);
        root.setWritable(true);
        MediaScannerConnection.scanFile(context, new String[] { root.toString() }, null,
                new MediaScannerConnection.OnScanCompletedListener() {
                    public void onScanCompleted(String path, Uri uri) {
                    }
                });

        File myfile = new File(root, sFileName);
        writer = new FileWriter(myfile);
        writer.append("Unit\n\n");
        writer.append("#\tValue \tX \tY \tZ \tTime\n\n");
        readyToRecord=true;
    } catch (IOException e) {
        e.printStackTrace();
        Toast.makeText(context, "Error creating file", Toast.LENGTH_SHORT).show();
        stop();
    }
}

我添加了以下代码,因为我读过它会有帮助

root.setExecutable(true);
        root.setReadable(true);
        root.setWritable(true);
        MediaScannerConnection.scanFile(context, new String[] { root.toString() }, null,
                new MediaScannerConnection.OnScanCompletedListener() {
                    public void onScanCompleted(String path, Uri uri) {
                    }
                });

我不包含其他功能,因为他们不负责创建路径和文件。 我希望你能帮助我。 谢谢

2 个答案:

答案 0 :(得分:1)

我找到了解决方案。我将代码更改为

        File root = new File(Environment.getExternalStorageDirectory()+ "/Main folder/"+date);
        if (!root.exists()) {
            root.mkdirs();
        }
        myfile = new File(root.getAbsolutePath(), sFileName);
        writer = new FileWriter(myfile);

getExternalStorageDirectory的使用适用于所有Android版本,与getExternalStoragePublicDirectory不同(                 Environment.DIRECTORY_DOCUMENTS)

此外,CommonsWare的部分内容也是必要的。

答案 1 :(得分:0)

扫描{ "name": "xFlare/slack-bot", "description": "xFlare's Slack bot project", "authors": [ { "name": "xFlare" } ], "minimum-stability": "dev", "prefer-stable": true, "require": { "php": ">=5.5", "coderstephen/slack-client": "^0.3.0" } } ,而不是myfile,并且只有在您写完并关闭 root之后才能扫描。