【萬里征程——Windows App開發】檔案&資料——讀取檔案/資料夾名

nomasp發表於2015-04-14

在上一節中我們學習了資料繫結,因為我個人對上一篇還是比較滿意的,至少相對於前面的那些而言(我也知道前面寫的太差了,後面還會繼續修改的,部落格也像軟體一樣嘛)。這一節開始我們將陸續看到Windows App是怎樣操作檔案的。

在Windows上讀取檔名、資料夾名

首先我們在XAML中定義一個Button和TextBlock,將讀取檔案/資料夾名的過程寫在前者的click事件中,後者則用來顯示檔案資訊。

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">        
     <StackPanel Orientation="Horizontal">                
          <Button Name="btnGetName" Width="200" Height="100" Content="讀取檔名" Click="btnGetName_Click"/>                
          <TextBlock Name="textBlockFileName" Width="500" Height="300" FontSize="30" Margin="12"/>              
     </StackPanel>         
</Grid>

以下這段程式碼,首先通過StorageFolder類讀取圖片庫,然後使用非同步的方式將圖片庫的檔案和資料夾資訊載入相應的List中。新建一個StringBuilder用以儲存這些檔案的資訊,在這裡只是使用了檔案/資料夾的Name屬性,但屬性還有很多,比如Path屬性。最後再將這些獲取到的資訊賦值給TextBlock即可。

        private async void btnGetName_Click(object sender, RoutedEventArgs e)
        {
            StorageFolder pictureFolder = KnownFolders.PicturesLibrary;
            IReadOnlyList<StorageFile> pictureFileList = await pictureFolder.GetFilesAsync();
            IReadOnlyList<StorageFolder> pictureFolderList = await pictureFolder.GetFoldersAsync();

            StringBuilder picutreFolderInfo = new StringBuilder();          
            foreach(StorageFile f in pictureFileList)
            {
                picutreFolderInfo.Append(f.Name+"\n");
            }
            foreach(StorageFolder f in pictureFolderList)
            {
                picutreFolderInfo.Append(f.Name+"\n");
            }
            textBlockFileName.Text = picutreFolderInfo.ToString();                
        }

注意要在方法名前面加上async哦。還有要在清單檔案中宣告我們的應用要使用圖片庫哦,一會在Windows Phone中也一樣。

這裡寫圖片描述

在Windows Phone上讀取檔名、資料夾名

後臺程式碼不用做任何修改,只需把XAML程式碼修改修改以適應螢幕即可~

<Grid>
    <StackPanel Orientation="Vertical">
         <Button Name="btnGetName" Width="150" Height="70" HorizontalAlignment="Center"
                        Content="讀取檔名" Click="btnGetName_Click"/>
         <TextBlock Name="textBlockFileName" Width="300" Height="300" FontSize="30" Margin="12" TextWrapping="Wrap"/>
    </StackPanel>           
</Grid>

讀取檔名的其他方法

        private async void btnGetName_Click(object sender, RoutedEventArgs e)
        {
            StorageFolder picutureFolder = KnownFolders.PicturesLibrary;
            StringBuilder pictureFolderInfo = new StringBuilder();
            IReadOnlyList<IStorageItem> pictureFileItem = await picutureFolder.GetItemsAsync();              
            foreach(var i in pictureFileItem)
            {
                if (i is StorageFolder)
                    pictureFolderInfo.Append(i.Name + "\n");
                else
                    pictureFolderInfo.Append(i.Name + "\n");
            }    
            textBlockFileName.Text = pictureFolderInfo.ToString();
        }



為使本文得到斧正和提問,轉載請註明出處:
http://blog.csdn.net/nomasp

相關文章