我的项目中有一个名为data/
的文件夹,其中包含txt files
。
我将Build Action
resources
配置为所有文件。
我尝试了以下不同方式:
var resource = Application.GetResourceStream(new Uri(fName, UriKind.Relative));
StreamReader streamReader = new StreamReader(resource.Stream);
Debug.WriteLine(streamReader.ReadToEnd());
IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication();
string[] fileNames = myIsolatedStorage.GetFileNames("*.txt");
using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
{
using (StreamReader fileReader = new StreamReader(new IsolatedStorageFileStream(fName, FileMode.Open, isf)))
{
while (!fileReader.EndOfStream)
{
string line = fileReader.ReadLine();
al.Add(line);
Debug.WriteLine(line);
}
}
}
现在,我尝试了不同的方法来阅读文件而没有成功,为什么? 问题在哪里?
这些方法有什么问题?
fName
是文件的名称
这是必要的完整路径data / filename.txt?这是无关紧要的......
请帮我解决这个愚蠢的问题,
感谢。
答案 0 :(得分:9)
你的第二个&第三种方法是错误的。当您在应用程序中本地包含文本文件时,您无法通过IS引用它。相反,使用此函数,如果找到它将返回文件内容,否则它将返回"null"
。它适用于我,希望它适合你。
注意,如果文件设置为内容,则filePath = "data/filename.txt"
但如果将其设置为资源,则应将其称为此filePath = "/ProjectName;component/data/filename.txt"
。这可能就是你的第一种方法可能失败的原因。
private string ReadFile(string filePath)
{
//this verse is loaded for the first time so fill it from the text file
var ResrouceStream = Application.GetResourceStream(new Uri(filePath, UriKind.Relative));
if (ResrouceStream != null)
{
Stream myFileStream = ResrouceStream.Stream;
if (myFileStream.CanRead)
{
StreamReader myStreamReader = new StreamReader(myFileStream);
//read the content here
return myStreamReader.ReadToEnd();
}
}
return "NULL";
}