PathIO.WriteBytesAsync也应该创建文件
本文关键字:文件 创建 也应该 WriteBytesAsync PathIO | 更新日期: 2023-09-27 18:10:51
我可以发誓我的代码上周还在运行,创建不存在的文件并覆盖现有的文件。今天我一直遇到异常。FileNotFoundExceptions .
是否允许PathIO创建文件?如果没有,是否有一种方法可以仅从字符串路径创建文件?
路径是有效的,可访问的,我可以从我的应用程序写入它,但我不能创建文件。路径是通过path创建的。组合和ApplicationData.Current.LocalFolder。如果我手动创建它,我可以使用PathIO.ReadXXX.
我希望不要在路径树上做循环,检查每个SrorageFolder和所有这些。
编辑
当前代码(在这种情况下我只想创建一个空文件):
string root = ApplicationData.Current.TemporaryFolder.Path;
string path = Path.Combine(root, "test", "test.txt");
PathIO.WriteBytesAsync(path, new byte[0]).AsTask().Wait();
如果我在那个特定的位置创建了一个文件,我可以使用PathIO.WriteBytesAsync写入它。如果我通过Windows资源管理器创建一个文件,
所有PathIO方法都依赖于已经存在的文件,包括所有Write*方法。它们被设计为助手,以减轻您必须打开文件流等简单操作。这种行为使它们在概念上与FileIO助手api相似,并使其与同样依赖于存在的Append*方法的行为保持一致。
回答你的偶然问题——是否有一种简单的方法来创建一个带有路径的文件,答案是肯定的。使用静态方法Windows.Storage.StorageFile。CreateFileAsync,通常采用CreationCollisionOption的版本,你可以指定打开文件,如果它已经存在,而不是覆盖它。无论哪种方式,您都可以提供带有文件名的相对路径,例如:"test1'test2'test3'myfile.dat",它会自动创建test1、test2和test3子文件夹。
如果你调用CreateFileAsync,当然,你将有一个StorageFile,然后你可以使用FileIO api。或者您可以忽略StorageFile(它只是路径名的抽象),如果对您的代码更方便的话,可以使用您的字符串路径。