Создание физического файла с помощью UWP в Windows IoT 10 Core - PullRequest
0 голосов
/ 18 февраля 2019

Я попытался создать какой-то физический файл в ОС устройства с Windows IoT 10 Core, используя следующий код:

StorageFolder storageFolder = await KnownFolders.GetFolderForUserAsync(null, KnownFolderId.PicturesLibrary);

try
{
    StorageFile file = await storageFolder.CreateFileAsync("robodem.log", CreationCollisionOption.ReplaceExisting);

    using (Stream fileStream = await file.OpenStreamForWriteAsync())
    using (var streamWriter = new StreamWriter(fileStream))
    {
        streamWriter.Write("test");
    }

    onMessageOccured(Severity.Success, "Done");
}
catch (Exception ex)
{
    onMessageOccured(Severity.Error, ex.Message);
}

Однако я не получаю никаких исключений при поиске файла с использованием:

Get-Childitem –Path c:\ -Include robodem.log -Directory -Recurse -ErrorAction SilentlyContinue

Я не нахожу это.

Кроме того, storageFolder.Attributes равно FileAttributes.Archive.

Если я использую:

StorageFolder storageFolder = await KnownFolders.GetFolderForUserAsync(null, KnownFolderId.PicturesLibrary);

try
{
    using(FileStream stream = new FileStream("c:\\robodem.log", FileMode.OpenOrCreate))
    using (StreamWriter streamWriter = new StreamWriter(stream))
    {
        streamWriter.Write("test");
    }

    onMessageOccured(Severity.Success, "Done Base");
}
catch (Exception ex)
{
    onMessageOccured(Severity.Error, ex.Message);
}

Я получаю это исключение:

Доступ к пути 'c: \ robodem.log' запрещен.

Это конфигурация Package.appxmanifest:

<Capabilities>
    <Capability Name="internetClient" />
    <uap:Capability Name="musicLibrary" />
    <uap:Capability Name="removableStorage" />
    <uap:Capability Name="picturesLibrary" />
    <uap:Capability Name="videosLibrary" />
    <uap:Capability Name="documentsLibrary" />
    <DeviceCapability Name="webcam" />
    <DeviceCapability Name="serialcommunication">
      <Device Id="any">
        <Function Type="name:serialPort" />
      </Device>
    </DeviceCapability>
</Capabilities>

Как создать физический файл для записи информации журнала и дальнейшего ее чтения?

1 Ответ

0 голосов
/ 19 февраля 2019

Ваш код правильный.

Вы можете использовать file.Path, чтобы получить путь к файлу.При развертывании приложения UWP через Visual Studio оно использует пользователя DefaultAccount.Таким образом, путь к файлу будет C:\Data\Users\DefaultAccount\Pictures\robodem.log.

System.Diagnostics.Debug.WriteLine(file.Path);

И используйте -File вместо -Directory и удалите -ErrorAction SilentlyContinue.Попробуйте эту команду: Get-Childitem -Path c:\ -Include robodem.log -file -Recurse

Доступ к пути 'c: \ robodem.log' запрещен.

Не все папки на вашем устройстве доступны дляУниверсальные приложения для Windows.Пожалуйста, обратитесь к Права доступа к файлу .

...