Windows 8 Metro Style App中文件操作都包含在Windows.Storage命名空间中,其中包括StorageFolder,StorageFile,FileIO等类库。 
  文件对象用StorageFile实现,文件头用StorageFolder实现,下面看下具体的用法及各类库下的属性他方法。 
  创建文件  
 
 
StorageFolder storageFolder=KnownFolders.DocumentsLibrary; 
StorageFile storageFile=await storageFolder.CreateFileAsync("sample.txt",CreationCollisionOption.ReplaceExisting);  KnownFolders提供了系统中常规的文件路径。 
CreationCollisionOption提供了创建文件冲突时的操作选项。 
   
  FileIO对象负责文件的读/写操作 
  读取文件  
 
 
string fielContent=await FileIO.ReadTextAsync(storageFile);  读取操作包含三种方式: 
  返回普通文本 ReadTextAsync(storageFile)/ReadTextAsync(storageFile,UnicodeEncoding)(返回指定的文本编码格式) 
返回流 ReadBufferAsync(storageFile) 
 
 
IBuffer buffer = await FileIO.ReadBufferAsync(storageFile); 
using (DataReader dataReader = DataReader.FromBuffer(buffer)) 
{ 
string fileContent = dataReader.ReadString (buffer.Length);                     
}还可通过流读取文件内容 
 
using (IRandomAccessStream readStream = await sampleFile.OpenAsync(FileAccessMode.Read)) 
{ 
using (DataReader dataReader = new DataReader(readStream)) 
{ 
uint numBytesLoaded = await dataReader.LoadAsync((uint)readStream.Size); 
string fileContent = dataReader.ReadString(numBytesLoaded);                       
} 
} 
 
返回文本行 
 
ReadLinesAsync(storageFile)/ReadLinesAsync(storageFile,UnicodeEncoding) 
 
  
 
  写入文件  
 
 
await FileIO.WriteTextAsync(storageFile,content)  写入文件也包含以下几种操作: 
    写入Buffer数据 WriteBufferAsync(IStorage File,IBuffer buffer) 
    写入bytes字节数据 WriteBytesAsync(IStorage File,bytes[] byte) 
    写入文本行 WriteLinesAsync(IStorageFile File, IIterable(String)) /WriteLinesAsync(IStorageFile File, IIterable(String), UnicodeEncoding)  
    写入字符串 WriteTextAsync(IStorageFile File,string content) 
   
通过流写入内容 
 
 
using (IRandomAccessStream writeStream = await storageFile.OpenAsync(FileAccessMode.ReadWrite)) 
{                         
using (DataWriter dataWriter = new DataWriter(writeStream)) 
{ 
dataWriter.WriteString(userContent); 
await dataWriter.StoreAsync(); 
await dataWriter.FlushAsync();                            
} 
}  同样也提供追加文本的方法 
  AppendLinesAsync(IStorageFile, IIterable(String)) /AppendLinesAsync(IStorageFile, IIterable(String), UnicodeEncoding)  
AppendTextAsync(IStorageFile, String) /AppendTextAsync(IStorageFile, String, UnicodeEncoding)  
   
  删除文件  
 
 
await storageFile.DeleteAsync()   
  复制文件  
 
 
StorageFile storageFileCopy = await storageFile.CopyAsync(KnownFolders.DocumentsLibrary, "sample - Copy.txt", NameCollisionOption.ReplaceExisting);  复制文本也有几种方式 
   CopyAndReplaceAsync 
   CopyAsync(IStorageFolder)  
   CopyAsync(IStorageFolder, String FileName)  
   CopyAsync(IStorageFolder, String FileName, NameCollisionOption) 
   
  重命名文件  
 
 
StorageFile storageFile1=await storageFile.RenameAsync("sampleRe.txt")   
  移动文件  
 
 
await storageFile.MoveAsync(StorageFolder NewStorageFolder,string NewFileName);   
  提到文件操作,不得不说说文件流。 
在以前的开发中,我们经常用到的就是文件流、字节数组等操作,在WinRT中有些区别,文件流有IRandomAccessStream、FileInputStream、FileOutStream、FileRandomAccessStream等,用IBuffer代替了byte[]。下面看看具体的用法: 
获取文件流 
 
 
IRandomAccessStream readStream = await sampleFile.OpenAsync(FileAccessMode.Read) 
FileInputStream inputStream=readStream.GetInputStreamAt(0) as FileInputStream; 
FileOutputStream outStream=readStream.GetOutputStreamAt(0) as FileOutputStream;   
  DataReader/DataWriter的用法见上 
   
  IBuffer、byte[]、Stream之间的转换 
 
 
IBuffer buffer = await FileIO.ReadBufferAsync(sampleFile); 
byte[] bytes=WindowsRuntimeBufferExtensions.ToArray(buffer,0,(int)buffer.Length); 
Stream stream = WindowsRuntimeBufferExtensions.AsStream(buffer);  还有很多文件操作的场景没有整理,虽然WinRT中提供了很多文件流,但它们的核心用法都是类似 的,希望在后续的不断使用中慢慢接触不同类型流的使用。 
 
 
 
  
运维网声明 
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003 
2、本站所有主题由该帖子作者发表,该帖子作者与运维网  享有帖子相关版权 
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版 
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任 
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任 
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任 
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决 
8、联系人Email:admin@iyunv.com  网址:www.yunweiku.com