C# Xamarin WriteAllBytes正确的文件夹路径

oxf4rvwz  于 2023-03-06  发布在  C#
关注(0)|答案(1)|浏览(150)


I正在尝试将从mp3文件转换的一组字节写回mp3文件以临时存储在用户的移动终端中,但似乎无法获得写入位置的正确文件夹路径。
我试过使用Directory.GetCurrentDirectory()Environment.CurrentDirectory,和其他类似的方法来获取当前目录,但是只返回了null或一个/,所以我不确定我是否正确地使用了这些方法。唯一能让我找到的路径工作的方法是FileSystem.CacheDirectory,它给出/data/user/0/com.companyname.lal/cache/
我想,如果我只是暂时想存储这个mp3文件,然后删除它播放后不久,这可能是正确的想法使用该高速缓存的Android和iOS.它似乎工作,但我找不到这个/data/user/0/com.companyname.lal/cache/完整路径,我的Android模拟器文件所在的位置.有一个data文件夹,但没有user或任何其他子文件夹.
就像我说的,我最终只想暂时在用户的移动终端上写入和存储这个文件,这样我就可以在播放后很快删除它,但现在我只需要弄清楚如何在所有可以用代码访问的地方写入文件。

dgtucam1

dgtucam11#

正如Jason所说,您可以使用Environment.SpecialFolder和Environment.GetFolderPath方法来选择一个合适的位置进行存储和回调,下面的代码将文件存储在System目录中:

File.WriteAllBytes(Environment.GetFolderPath(Environment.SpecialFolder.System),test);

如果System目录返回空,可以使用ApplicationData获取appdate的路径,我创建了一个Xamarin.Forms项目,在iOS和Android模拟器上都进行了测试,路径可以成功返回。

var path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

有关方法使用的详细信息,请参阅官方文档:Environment.SpecialFolder Enum
Environment.GetFolderPath Method

**更新:**如果您需要读取文件,例如,如果您使用WriteAllBytes

string fileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "xxx");
File.WriteAllBytes(fileName, XXX);
var test=File.ReadAllBytes(fileName);

有关详情,请参阅:File Handling in Xamarin.Forms

相关问题