清除文本文件的内容C#(WinRT)

时间:2014-11-06 01:48:26

标签: c# windows windows-runtime

我目前正在使用Windows运行时开发一个项目,我遇到了障碍,这种情况总是很容易做到,而且我觉得因为没有做到这一点感到非常沮丧。

我已经坐了几个小时,我似乎无法做对。我得到了“访问被拒绝错误”,当我点击按钮时,在我的代码的某些变体中,没有任何反应。我觉得答案是正确地盯着我。这是代码:

private async void btnDtlsSaveChanges(object sender, TappedRoutedEventArgs e)
{
    StorageFile del = await Package.Current.InstalledLocation
        .GetFileAsync("UserDetails.txt");
    await del.DeleteAsync();

    StorageFile file = await Package.Current.InstalledLocation.CreateFileAsync
        ("UserDetails.txt", CreationCollisionOption.OpenIfExists);

    using (StreamWriter writer = 
        new StreamWriter(await file.OpenStreamForWriteAsync()))
    { 
        await writer.WriteLineAsync("Hello World");               
    }
}

我还尝试使用ReplaceExisting代替OpenIfExists

StorageFile file = await Package.Current.InstalledLocation.CreateFileAsync
    ("UserDetails.txt", CreationCollisionOption.ReplaceExisting);

using (StreamWriter writer = new StreamWriter(await file.OpenStreamForWriteAsync()))
{ 
    await writer.WriteLineAsync("Hello World");               
}

我已经尝试了几种方式,都是沿着同一条轨道前进的,我已经查看了堆栈溢出的所有相关问题,没有什么能让我到那里。

非常感谢任何帮助,提前谢谢。

编辑:(已解决)我的愚蠢和新技术的学习并没有真正意识到LocalStorage和实际安装位​​置之间存在差异,这要归功于Rob Caplan指导我正确的方向。 / p>

3 个答案:

答案 0 :(得分:0)

我不知道您使用等待的原因,但以下代码应该可以为您清除文件内容

using (StreamWriter sw = new StreamWriter("UserDetails.txt", false))
{
    sw.WriteLine("Hello world");
}

答案 1 :(得分:0)

您获得拒绝访问权限,因为应用程序不具有对Package.Current.InstalledLocation的写入权限。

对于写入权限,您需要使用应用程序数据文件夹,例如Windows.Storage.ApplicationData.Current.LocalFolder

如果您希望使用初始数据文件发布应用程序,然后在运行时使用用户数据更新应用程序,则可以在首次运行时将其从InstalledLocation复制到LocalFolder。

请参阅App data (Windows Runtime apps)Accessing app data with the Windows Runtime (Windows Runtime apps)

答案 2 :(得分:0)

我用一个按钮来测试

单击该按钮后,文件将为空 您需要使用FileMode.Create,它将创建一个新文件或覆盖它。

    private void button1_Click(object sender, EventArgs e)
    {
        using (FileStream NewFileStream = new FileStream(@"C:\Users\Crea\Documents\TCP.txt", FileMode.Create))
        { }
        //using (StreamWriter sw = new StreamWriter(@"C:\Users\Crea\Documents\TCP.txt", true))
        //    {
        //    sw.WriteLine("Hello");
        //    }
    }