本文介绍了你如何在IsolatedStorage所有文件的平板上市?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要在一个给定的IsolatedStorage文件中的所有文件的清单。有关IsolatedStorage的根的子文件夹和这些需要包括在列表中。
I need to get a list of all files in a given IsolatedStorage folder. There are sub folders off the root of the IsolatedStorage and these need to be included in the list.
通常System.IO类不能与IsolatedStorage使用。
The usual System.IO classes can't be used with IsolatedStorage.
推荐答案
下面是我想出来的 - 它的工作原理,但我很想看看是否有更好的选择:
Here's what I've come up with - it works but I'd be interested to see if there are better alternatives:
using System.Collections.Generic;
using System.IO;
using System.IO.IsolatedStorage;
using System.Linq;
public static class IsolatedStorageFileExtensions
{
/// <summary>
/// Recursively gets a list of all files in isolated storage
/// </summary>
/// <remarks>Based on <see cref="http://dotnetperls.com/recursively-find-files"/></remarks>
/// <param name="isolatedStorageFile"></param>
/// <returns></returns>
public static List<string> GetAllFilePaths(this IsolatedStorageFile isolatedStorageFile)
{
// Store results in the file results list
List<string> result = new List<string>();
// Store a stack of our directories
Stack<string> stack = new Stack<string>();
// Add initial directory
string initialDirectory = "*";
stack.Push(initialDirectory);
// Continue while there are directories to process
while (stack.Count > 0)
{
// Get top directory
string dir = stack.Pop();
string directoryPath;
if (dir == "*")
{
directoryPath = "*";
}
else
{
directoryPath = dir + @"\*";
}
// Add all files at this directory to the result List
var filesInCurrentDirectory = isolatedStorageFile.GetFileNames(directoryPath).ToList<string>();
List<string> filesInCurrentDirectoryWithFolderName = new List<string>();
// Prefix the filename with the directory name
foreach (string file in filesInCurrentDirectory)
{
filesInCurrentDirectoryWithFolderName.Add(Path.Combine(dir, file));
}
result.AddRange(filesInCurrentDirectoryWithFolderName);
// Add all directories at this directory
foreach (string directoryName in isolatedStorageFile.GetDirectoryNames(directoryPath))
{
stack.Push(directoryName);
}
}
return result;
}
}
这篇关于你如何在IsolatedStorage所有文件的平板上市?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!