从此

Android IO Files Network


综合/最新



IO 存储 Files

独享区(0为User ID) - /data/user/0/包名/,不会被文件管理器感知到。

公共区 - /storage/emulated/0/Android/data/包名/,其中 /storage/emulated/0/Download/、Documents/ 无需授权,且创建者卸载也会保留。配置了 android:hasFragileUserData=true 的应用卸载时, 会询问是否保存其公共区的数据。

U盘区 - /storage/UUID/;无权区 - /system/等。 存储: 常用目录 - getCacheDir()、getFilesDir()、公用目录 Environment.getExternalStorageDirectory() 即 /storage/emulated/0 拼接路径 - getCacheDir().toPath().resolve("x.txt").toFile(); 文件路径传输首选通过 FileDescriptor。 临时写入文件: try { var path = getFilesDir().toPath().resolve("f.txt"); Files.write(path, "Content".getBytes()); // Android 未实现 Files.writeString(...); } catch (IOException e) { } // 或 追加内容: try (var fos = new FileOutputStream(File.createTempFile("x".repeat(3), ".txt", new File(System.getProperty("java.io.tmpdir")))); // 即 getCacheDir(),不提供则由系统决定。 var ch = fos.getChannel()) { // 取代 InputStream/OutputStream;返回写入字节数。 ch.write(ByteBuffer.wrap("Hi".getBytes())); } catch (IOException e) { } 通过 Environment.DIRECTORY_PICTURES 可获取用户更改的默认图片存储位置,实际路径通常是: /storage/emulated/0/Pictures/;但应首选非写死的 ContentUri。 contentValues.put(MediaStore.Images.ImageColumns.RELATIVE_PATH, Environment.DIRECTORY_PICTURES); // 指定约定目录或子目录;或 put(MediaStore.Images.Media.RELATIVE_PATH, "Pictures/subDir")

其他