【发布时间】:2012-03-05 20:13:22
【问题描述】:
大家下午好,
据我了解,Android 有(至少)2 个文件系统。一个用于“内部”存储(例如 /data 和 /system),另一个用于“外部”存储(例如 /mnt/sdcard),
这意味着当我们将文件保存到“内部”存储(Context.getFilesDir,Context.getCacheDir)时,使用的文件分隔符可能与我们将文件保存到“外部”存储(Context.getExternalFilesDir,Context.getExternalCacheDir)时不同, Environment.getExternalStoragePublicDirectory),但 java.io.File.separator 似乎只为我们提供了有关使用的“默认”文件系统的信息。
我们如何获取Android上不同文件系统使用的不同文件分隔符?
我试过java.nio.file.spi.FileSystemProvider.installedProviders(),但它看起来像android doesn't have this package。
有没有办法获取 Android 上的文件系统列表?
【问题讨论】:
-
是什么让你认为路径分隔符可以不同?总而言之,操作系统是 Linux,文件系统的东西由操作系统处理。
-
@EugeneMayevski'EldoSCorp 嗯,我听说将外部驱动器安装在 NTFS 上,这就是为什么我认为它们可以不同
-
常识告诉我,驱动程序必须遵循其构建平台上的路径规则(至少在 Windows 和 MacOS X 上是这样),因此即使是 NTFS 驱动程序也可以使用正斜杠 (顺便说一句,它们在 Windows 上也有效)作为路径分隔符。而且大多数操作系统函数无论如何都只会处理正斜杠。
-
@EugeneMayevski'EldoSCorp 但是它不仅仅是文件分隔符,不同文件系统之间的文件分隔符(路径分隔符)也不同。
-
不,他们不是。文件系统(数据结构)对路径分隔符一无所知。是司机做的。并且驱动程序必须遵循操作系统规则(它们可以与文件系统规则或限制相结合,但仍然必须遵循操作系统规则)。
标签: android filesystems