win10 UWP讀寫檔案
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;
在生成前在清單請求許可權
除了圖片庫還有很多,在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");
}
}
}
相關推薦
win10 UWP讀寫檔案
C# uwp應用的檔案讀寫最常見錯誤就是沒有許可權。 而最簡單的方法是對已知的檔案路徑進行訪問 已知的檔案路徑常見的是自身的路徑 許可權這個和之前不同,UWP讀寫檔案多用StorageFile來讀寫檔案 [TOC] StorageFile沒有直接的開啟
《Learn python3 the hard way》ex16 讀寫檔案
作者想讓我們記住的命令: close- 關閉檔案,就像編輯器中的“檔案->另存為”一樣 read- 讀取檔案內容。你可以把讀取結果賦值給一個變數 readline- 只讀取文字檔案的一行內容 truncate- 清空檔案。清空的時候要當心 write("stuff")-給檔案寫入一些東
android檔案操作——讀寫檔案demo
寫檔案操作: public void save(String inputText) { FileOutputStream out = null; BufferedWriter writer = null; try {
PHP讀寫檔案
讀檔案的步驟 讀取檔案路徑,獲得檔案“指標” $DocRoot=$_SERVER["DOCUMENT_ROOT"]; @$fp=fopen("$DocRoot/../mytext/save.txt","ab");//二進位制追加開啟檔案 判斷檔案非空,如果讀取失敗,退出並提示對應資訊
python:讀寫檔案模式
模式 描述 r 只讀,指標在檔案開頭 w 只寫。檔案存在被覆蓋,檔案不存在,建立新檔案 a 追加。檔案存在,指標在檔案末尾寫入;檔案不存在,
Python3.5開發3 - 基本命令及如何進行讀寫檔案
Python3.5開發3 - 基本命令及如何進行讀寫檔案 知識點: 熟練使用Python的列表,元組,集合與字典 熟練使用Python讀寫檔案 演示: # list a = [1,'yx',['x','y'],6]
Java專案中讀寫檔案
1.讀取檔案 InputStream input;//輸入流 InputStreamReader isr = null; BufferedReader br = null; //用於包裝InputStreamReader,提高處理效能。因為
java 使用 NIO 讀寫檔案
public static void Readnio() { RandomAccessFile randomAccessFile = null; FileChannel fileChannel = null; try {
Python 讀寫檔案 中文亂碼 錯誤TypeError: write() argument must be str, not bytes+
今天使用Python向檔案中寫入中文亂碼,程式碼如下: fo = open("temp.txt", "w+") str = '中文' fo.write(str) fo.close() 1 2 3 4
多緩衝區讀寫檔案
使用 OVERLAPPED 來讀寫大檔案還錯,如果是小檔案效能不是特別好 , 這個僅僅是自己電腦的測試. 用多緩衝區來讀寫會比較快 一個例子: const int __BUFFSIZE = 8192; //
Python進階(二十五)-Python讀寫檔案
分享一下我的偶像大神的人工智慧教程!http://blog.csdn.net/jiangjunshow 也歡迎轉載我的文章,轉載請註明出處 https://blog.csdn.net/mm2zzyzzp Python進階(二十五)-Python讀寫檔案
Java讀寫檔案,中文亂碼解決
讀檔案:使用new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8")); StringBuffer strBuf = new StringBuffer(); BufferedRead
mxnet-讀寫檔案
# -*- coding: utf-8 -*- """ Spyder Editor This is a temporary script file. """ import mxnet as mx import numpy as np import pickle as pkl #1.pickle a =
python json模組讀寫檔案及格式寫檔案
如何讀寫json(JaveScript Object Notation) 編碼格式資料 1 把資料轉為json格式 >>> import json >>> data = {'name': 'xiecl', 'age': 16} >>> json_str
JAVA四則運算(讀寫檔案)
完成時間:17:10 package 四則運算試題; import java.io.BufferedReader; import java.io.PrintStream; import java.util.Scanner; import java.io.FileReader; import java
Python3基礎之(十 五)讀寫檔案1
一、\n 換行命令 定義 text 為字串, 並檢視使用 \n 和不適用 \n 的區別: >>> text='this is first line,this is second line,this is third line' >>> prin
Python3基礎之(十 七)讀寫檔案3
一、讀取檔案內容 file.read() 上一節我們講了,寫檔案用的是'w'和'a',那麼今天來看看讀取檔案怎麼做 使用 file.read() 能夠讀取到文字的所有內容. if __name__=='__main__': file=open('my file.txt',
Python3基礎之(十 六)讀寫檔案2
我們先儲存一個已經有3行文字的 “my file.txt” 檔案, 檔案的內容如下: This is my first test. This is the second line. This the third 然後使用新增文字的方式給這個檔案新增一行 “This is ap
Python學習筆記系列——讀寫檔案以及敏感詞過濾器的實現
一、讀檔案 #開啟檔案,傳入檔名和識別符號,r代表讀 f= open('\\Users\ZC\Desktop\zc.txt','r') #呼叫read方法一次性讀取檔案的全部內容,存入記憶體,用str物件表示 print(f.read()) f.close() #使用with無論程式是否
C# & JAVA:讀寫檔案
using System; using System.IO; using System.Text; namespace ConsoleApplication4 { class Program { public static void Read(string path) { FileS