<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                C# uwp應用的文件讀寫最常見錯誤就是沒有權限。 而最簡單的方法是對已知的文件路徑進行訪問 已知的文件路徑常見的是自身的路徑 權限這個和之前不同,UWP讀寫文件多用`StorageFile`來讀寫文件 [TOC] `StorageFile`沒有直接的打開一個文件的做法,而是通過`StorageFolder`創建,打開文件來進行。 下面代碼需要`using Windows.Storage;` ## 獲取應用目錄的文件夾 ~~~ StorageFolder folder; folder = ApplicationData.Current.LocalFolder; ~~~ ## 創建文件 獲取后,這里不需要權限,可以直接創建文件 ~~~ folder.CreateFileAsync(file_name , CreationCollisionOption.ReplaceExisting); ~~~ 其中`ApplicationData.Current`Current的值可以是 LocalCacheFolder 本地臨時文件夾,LocalFolder 本地文件夾,LocalSettings 本地設置,RoamingFolder 漫游文件夾,RoamingSettings 漫游設置 創建文件的時候可以選擇,如果存在了文件的選擇`CreationCollisionOption`里ReplaceExisting 如果文件或文件夾已存在,則替換現有的項 FailIfExists 默認值 如果文件或文件夾已存在,則引發類型為 System.Exception 的異常。 還有用的比較少的選項。 ## 創建文件夾 創建文件夾和創建文件也是一樣 先獲取本地的文件夾`StorageFolder folder; folder = ApplicationData.Current.LocalFolder;` 創建文件夾 ~~~ folder.CreateFolderAsync(folder_name,CreationCollisionOption.ReplaceExisting); ~~~ 為了顯示已經做的,我做了一個函數來顯示`void notify(string str)` 把做出來的東西顯示出來 ## 讀寫文件 把創建的文件存為`file_demonstration`,對`file_demonstration`讀寫 可以把這個新的東西變為熟悉的 需要`using System.IO;` ~~~ Stream file = await file_demonstration.OpenStreamForWriteAsync() ~~~ 這樣讀寫就很簡單 寫文件代碼 ~~~ using (Stream file = await file_demonstration.OpenStreamForWriteAsync()) { using (StreamWriter write = new StreamWriter(file)) { write.Write("寫入"); } } ~~~ 讀文件 ~~~ string s; using (Stream file = await file_demonstration.OpenStreamForReadAsync()) { using (StreamReader read = new StreamReader(file)) { s = read.ReadToEnd(); } } ~~~ 微軟官方的讀寫文件 `using Windows.Storage.Streams;` 寫文件 ~~~ using (StorageStreamTransaction transaction = await file_demonstration.OpenTransactedWriteAsync()) { using (DataWriter dataWriter = new DataWriter(transaction.Stream)) { dataWriter.WriteString(str); transaction.Stream.Size = await dataWriter.StoreAsync(); await transaction.CommitAsync(); } } ~~~ 讀文件 ~~~ using (IRandomAccessStream readStream = await file.OpenAsync(FileAccessMode.Read)) { using (DataReader dataReader = new DataReader(readStream)) { UInt64 size = readStream.Size; if (size <= UInt32.MaxValue) { UInt32 numBytesLoaded = await dataReader.LoadAsync((UInt32)size); string fileContent = dataReader.ReadString(numBytesLoaded); } } } ~~~ ## 別的文件夾 我們用軟件安裝目錄的時候還是比較少,我們需要用到的文件夾還有很多,現在下面就有一些系統文件夾可以使用 圖片庫 選圖片庫可以使用`folder_demonstration = KnownFolders.PicturesLibrary;` 在生成前在清單請求權限 ![配置](https://box.kancloud.cn/2016-04-08_57076366c7f53.jpg "") ![在清單請求圖片](https://box.kancloud.cn/2016-04-08_57076366df92a.jpg "") 除了圖片庫還有很多,在`KnownFolders`可以看到,使用前需要請求權限。 還有下載文件`DownloadsFolder` `folder_demonstration = DownloadsFolder.CreateFolderAsync(folder_name);` ## 選取文件 系統給的我們有時候還需要用戶選的文件 選取文件需要`Windows.Storage.Pickers.FileOpenPicker`,使用`picker.PickSingleFileAsync()`來出現選擇界面 在使用`picker.PickSingleFileAsync()`要設置后綴,選擇文件的后綴`picker.FileTypeFilter.Add(".txt");` 一般我們有推薦第一次使用選擇進入的文件夾`picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary;` 選取文件夾和選取文件一樣 ~~~ Windows.Storage.Pickers.FolderPicker folderPicker = new Windows.Storage.Pickers.FolderPicker(); folderPicker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail; folderPicker.FileTypeFilter.Add(".txt"); StorageFolder folder = await folderPicker.PickSingleFolderAsync(); if (folder != null) { notify("選擇" + folder.Name); folder_demonstration = folder; } ~~~ 全部代碼 ~~~ using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using Windows.Storage; using Windows.Storage.Streams; namespace file { public class model { public model() { //C# uwp應用的文件讀寫最常見錯誤 //就是沒有權限。 //而最簡單的方法是對已知的文件 //路徑進行訪問 //自身的路徑 ce(); } /// <summary> /// 結果 /// </summary> public string result { set { _result.Add(value); } get { StringBuilder t = new StringBuilder(); foreach (string s in _result) { t.Append(s); } return t.ToString(); } } public async void ce() { //創建文件 await create_ApplicationData("測試.txt"); //創建文件夾 await folder_ApplicationData("在安裝的路徑創建不需要權限"); //讀寫文件和以前一樣 await write_ApplicationData(); await read_ApplicationData(); //如果要讀寫別的地方的文件,可以用 //folder_demonstration = KnownFolders.PicturesLibrary; //要在清單請求權限 //DownloadsFolder 下載文件夾這里也可以 //folder_demonstration = DownloadsFolder.CreateFolderAsync(folder_name); //也可以讓用戶選 } private StorageFile file_demonstration;//UWP 采用StorageFile來讀寫文件 private StorageFolder folder_demonstration;//folder來讀寫文件夾 /// <summary> /// 自身路徑創建文件 /// </summary> /// <param name="file_name">要創建文件名字</param> /// <returns>已經創建的文件</returns> public async Task create_ApplicationData(string file_name) { StorageFolder folder; folder = ApplicationData.Current.LocalFolder; //Current的值可以是 //LocalCacheFolder 本地臨時文件夾 //LocalFolder 本地文件夾 //LocalSettings 本地設置 //RoamingFolder 漫游文件夾 //RoamingSettings 漫游設置 file_demonstration = await folder.CreateFileAsync(file_name , CreationCollisionOption.ReplaceExisting); //CreationCollisionOption 可以選擇 // 如果文件或文件夾已存在,則自動為指定名稱的基礎追加一個編號。例如,如果 MyFile.txt 已存在,則新文件名為 MyFile (2).txt。如果 MyFolder // 已存在,則新文件夾名為 MyFolder (2)。 //GenerateUniqueName //ReplaceExisting 如果文件或文件夾已存在,則替換現有的項。 //FailIfExists 默認值 如果文件或文件夾已存在,則引發類型為 System.Exception 的異常。 //OpenIfExists 如果文件或文件夾已存在,則返回現有的項。 notify("創建文件成功,文件路徑" + file_demonstration.Path); } /// <summary> /// 自身路徑創建文件夾 /// </summary> /// <param name="file_name">要創建文件夾名字</param> /// <returns>已經創建的文件夾</returns> public async Task folder_ApplicationData(string folder_name) { StorageFolder folder; folder = ApplicationData.Current.LocalFolder; folder_demonstration = await folder.CreateFolderAsync(folder_name , CreationCollisionOption.ReplaceExisting); notify("創建文件夾成功,文件夾路徑" + folder_demonstration.Path); } /// <summary> /// 對自身路徑進行文件讀寫 /// </summary> public async Task write_ApplicationData() { using (Stream file = await file_demonstration.OpenStreamForWriteAsync()) { using (StreamWriter write = new StreamWriter(file)) { write.Write("寫入"); } } //using (StorageStreamTransaction transaction = await file_demonstration.OpenTransactedWriteAsync()) //{ // using (DataWriter dataWriter = new DataWriter(transaction.Stream)) // { // dataWriter.WriteString(str); // transaction.Stream.Size = await dataWriter.StoreAsync(); // await transaction.CommitAsync(); // } //} notify("寫入文件成功"); } /// <summary> /// 讀文件 /// </summary> public async Task read_ApplicationData() { string s; using (Stream file = await file_demonstration.OpenStreamForReadAsync()) { using (StreamReader read = new StreamReader(file)) { s = read.ReadToEnd(); } } notify("讀文件\"" + s + "\""); } public async Task file_open() { Windows.Storage.Pickers.FileOpenPicker picker = new Windows.Storage.Pickers.FileOpenPicker(); //顯示方式 picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail; //選擇最先的位置 picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary; //后綴名 picker.FileTypeFilter.Add(".txt"); StorageFile file = await picker.PickSingleFileAsync(); if (file != null) { notify("選擇 " + file.Name); file_demonstration = file; } } public async Task folder_open() { Windows.Storage.Pickers.FolderPicker folderPicker = new Windows.Storage.Pickers.FolderPicker(); folderPicker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail; folderPicker.FileTypeFilter.Add(".txt"); StorageFolder folder = await folderPicker.PickSingleFolderAsync(); if (folder != null) { notify("選擇" + folder.Name); folder_demonstration = folder; } } private List<string> _result = new List<string>(); private void notify(string str) { _result.Add(str + "\r\n"); } } } ~~~ [https://code.csdn.net/lindexi_gd/uwp_write_read_file](https://code.csdn.net/lindexi_gd/uwp_write_read_file)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看