Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 创建的文件夹在文件资源管理器中不可见。。_Android_File_Sd Card_Createfile_Create Directory - Fatal编程技术网

Android 创建的文件夹在文件资源管理器中不可见。。

Android 创建的文件夹在文件资源管理器中不可见。。,android,file,sd-card,createfile,create-directory,Android,File,Sd Card,Createfile,Create Directory,我在SD卡上创建文件夹和文件时遇到问题 代码如下: File folder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString() + "/folder"); boolean success; if (!folder.exists()) { success = folder.mkdirs(); }

我在SD卡上创建文件夹和文件时遇到问题

代码如下:

    File folder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString() + "/folder");
    boolean success;
    if (!folder.exists()) {
        success = folder.mkdirs();
    }
    File obdt = new File(folder, "file.txt");
    try {
        success = obdt.createNewFile();
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
使用此代码,我希望在SD卡的
下载
文件夹中创建文件夹
文件夹
,并在该文件夹中创建文件
文件
。我希望用户可以访问该文件。所以我想把它放在一个共享文件夹中
success
变量是
true
,当我再次运行代码时,文件夹已经存在,不在if块中
但是我在文件资源管理器中看不到SD卡上创建的文件夹和文件。

信息:
getExternalStoragePublicDirectory(Environment.DIRECTORY\u下载)。toString()
返回
storage/sdcard/Download


我使用的是Galaxy Nexus。

如果您还没有这样做,您需要通过在清单中添加以下行,为您的应用程序授予写入SD卡的正确权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

有效。

logcat有任何错误吗?
其他:尝试类似Log.I(“路径名”,folder.absolutePath());然后查看您的日志,确保您正在创建您认为它所在的文件夹。

试试这个

        File dir = new File(Environment.getExternalStorageDirectory()
                + "/XXX/Wallpapers/");
        File[] files = dir.listFiles();

        if (files == null)

        {
            int numberOfImages = 0;
            BitmapDrawable drawable = (BitmapDrawable) imageView
                    .getDrawable();
            Bitmap bitmap = drawable.getBitmap();
            File sdCardDirectory = Environment
                    .getExternalStorageDirectory();
            new File(sdCardDirectory + "/XXX/Wallpapers/").mkdirs();
            File image = new File(sdCardDirectory
                    + "/XXX/Wallpapers/Sample" + numberOfImages + ".JPG");

            boolean success = false;
            FileOutputStream outStream;
            try {
                outStream = new FileOutputStream(image);
                bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
                outStream.flush();
                outStream.close();
                success = true;
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();

            }
            if (success) {
                Toast.makeText(
                        getApplicationContext(),
                        "Image saved successfully in Sdcard/XXX/Wallpapers",
                        Toast.LENGTH_LONG).show();
            } else {
                Toast.makeText(getApplicationContext(),
                        "Error during image saving", Toast.LENGTH_LONG)
                        .show();
            }
别忘了在清单中添加权限

  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

在资源管理器中看不到文件夹/文件?可能是因为MediaScanner处于活动状态,但没有添加文件。您可以在程序中执行此操作,也可以在手机设置的某个位置切换媒体扫描仪

该死的!:)

现在我解决了我的问题…我误解了在文件系统中创建文件的操作
当我提到文件资源管理器时,我指的是操作系统的文件资源管理器,而不是DDMS中的文件资源管理器:)
我想当我创建一个文件时,我会在操作系统的文件资源管理器中看到它,但当设备连接到PC时,文件只能在DDMS文件资源管理器中看到
抱歉,我是Android新手;)

当应用程序在没有PC连接的情况下独立运行,然后我连接PC时,我会看到创建的文件和文件夹:)


感谢您的帮助

显然,MTP中存在一个已知的错误

所有使用MTP而不是USB大容量存储的手机在使用USB电缆连接到计算机时都无法正确显示文件列表。设备上运行的Android应用程序也无法查看这些文件


它实际上与2012年一样古老

我遇到了同样的问题:创建的文件和文件夹在写入SD卡后不会立即显示,尽管文件已刷新并关闭

它们不会通过USB或手机上的文件浏览器显示在您的计算机上

我观察到三件事:

        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        String json = gson.toJson(myArrayList);

        try {
            File externalDir = getExternalStorageDirectory();
            File newFile = new File(externalDir, "myfile.txt");
            FileOutputStream os = new FileOutputStream(newFile);
            os.write(json.getBytes());
            os.flush();
            os.close();
            Timber.i("saved file to %s",newFile.getAbsoluteFile().toString());
        }catch (Exception ex)
        {
            Toast.makeText(getApplicationContext(), "Save to private external storage failed. Error message is " + ex.getMessage(), Toast.LENGTH_LONG).show();
        }
  • 如果文件的绝对路径以
    /storage/emulated/0/
    开头,这并不意味着它将位于SD卡上,而是可能位于主存储器上
  • 如果您等待大约5分钟,文件确实开始通过USB显示(即Windows资源管理器和内置文件资源管理器)
  • 如果您从终端使用adb shell ls/SD卡,则文件确实显示!您可以使用
    adb pull…
    立即获取文件。您也可以使用DDMS
  • 我使用的代码是:

            Gson gson = new GsonBuilder().setPrettyPrinting().create();
            String json = gson.toJson(myArrayList);
    
            try {
                File externalDir = getExternalStorageDirectory();
                File newFile = new File(externalDir, "myfile.txt");
                FileOutputStream os = new FileOutputStream(newFile);
                os.write(json.getBytes());
                os.flush();
                os.close();
                Timber.i("saved file to %s",newFile.getAbsoluteFile().toString());
            }catch (Exception ex)
            {
                Toast.makeText(getApplicationContext(), "Save to private external storage failed. Error message is " + ex.getMessage(), Toast.LENGTH_LONG).show();
            }
    


    为什么是这样?这似乎是你第一次体验时不得不忍受的另一种“安卓ISM”。

    你有没有例外的说法?如果您使用值
    false
    初始化
    success
    该怎么办?不,我没有例外…未初始化时,success为false您是否能够找到这些文件夹“storage/sdcard/Download”?不,存储文件夹为空…我在linux下工作…可能有问题吗?!路径为:/storage/sdcard0/Download/folder创建文件obdt=new文件(“/sdcard/File.txt”);已成功,但我在文件资源管理器中未看到--这是werid。您是否可以尝试从终端执行
    adb shell ls/sdcard/file.txt
    ?图像已成功保存在sdcard/XXX/wallpaps中,如果我再次运行,则文件为!=null,不在if块中…看起来一切都是正确的,但在文件资源管理器中,我看不到文件夹和图片!--您还可以在文件资源管理器中看到其他内容,并尝试在您的移动/设备上运行它,您肯定会得到它
            Gson gson = new GsonBuilder().setPrettyPrinting().create();
            String json = gson.toJson(myArrayList);
    
            try {
                File externalDir = getExternalStorageDirectory();
                File newFile = new File(externalDir, "myfile.txt");
                FileWriter fw = new FileWriter(newFile);
                fw.write(json);
                fw.flush();
                fw.close();
                Timber.i("saved file to %s",newFile.getAbsoluteFile().toString());
            }catch (Exception ex)
            {
                Toast.makeText(getApplicationContext(), "Save to private external storage failed. Error message is " + ex.getMessage(), Toast.LENGTH_LONG).show();
            }