Я испытал фрагмент кода на моей стороне, и она работала хорошо. Нет ничего плохого в вашем методе AddDataToFile
. Поэтому возможная причина может быть чем-то неправильным с файлом, который вы вызывали для чтения. Так как вы можете GetFileAsync
успешно, так что файл может существовать фактически. Тогда вы получили System.UnauthorizedAccessException
в ReadTextAsync()
, это может быть связано с тем, что у вас нет прав доступа к этому файлу, возможно, этот файл создается другими пользователями, к которым у вас нет доступа, или, возможно, к файлу обращается другой процесс для записи.
Вы можете создать файл в локальной папке самостоятельно и снова прочитать и записать, он должен работать. Поскольку вы не указали код для вызова этого метода, поэтому здесь я завершаю код, чтобы вызвать метод с созданным файлом, и он может работать хорошо. Код выглядит следующим образом:
Private Async Sub btnreadandwrite_Click(sender As Object, e As RoutedEventArgs)
Dim storageFolder As StorageFolder = Windows.Storage.ApplicationData.Current.LocalFolder
Dim sampleFile As StorageFile = Await storageFolder.CreateFileAsync("sampleFile.txt", CreationCollisionOption.ReplaceExisting)
Await FileIO.WriteTextAsync(sampleFile, "inital text")
AddDataToFile("sampleFile.txt", "add new content")
End Sub
Public Async Sub AddDataToFile(sFileName As String, sStructData As String)
Dim storageFolder As StorageFolder = Windows.Storage.ApplicationData.Current.LocalFolder
Dim sampleFile As StorageFile = Await storageFolder.GetFileAsync(sFileName)
Dim text As String = Await Windows.Storage.FileIO.ReadTextAsync(sampleFile)
text += sStructData
Await Windows.Storage.FileIO.WriteTextAsync(sampleFile, text)
End Sub
В чем разница с кодом OP? – Romasz
Я только что написал свой рабочий код, так как ваш код работал отлично для меня на моем VS. Просто имейте в виду ... Каждый раз, когда вы пишете файл, предыдущий текст в файле стирается, хотя вначале файл имеет что-то в нем, но если вы пишете пустой текст, еще раз записывая файл, чтение его ничего не вернет. –