我需要在android平台上使用StreamReader从文件中读取文本流。文件大约是100k行,所以如果我尝试将它全部加载到TextAsset或者如果我使用WWW,那么即使编辑器也会卡住。
我只需要逐行读取该文件而不将其全部加载到字符串中。然后我将从文件中获取的行生成树。 (但可能那部分没关系,我只需要文件阅读部分的帮助。)
我正在给出我在下面写下的代码。它在编辑器上完美运行,但在android上失败。
如果有人告诉我,我很遗憾,我很高兴。
(ps。英语不是我的母语,这是我在网站上的第一个问题。很抱歉我可能犯过的任何错误。)
private bool Load(string fileName)
{
try
{
string line;
string path = Application.streamingAssetsPath +"/";
StreamReader theReader = new StreamReader(path + fileName +".txt", Encoding.UTF8);
using (theReader)
{
{
line = theReader.ReadLine();
linesRead++;
if (line != null)
{
tree.AddWord(line);
}
}
while (line != null);
theReader.Close();
return true;
}
}
catch (IOException e)
{
Debug.Log("{0}\n" + e.Message);
exception = e.Message;
return false;
}
}
答案 0 :(得分:0)
您不能将Application.streamingAssetsPath用作Android上的路径,因为流媒体资源会与应用程序一起存储在JAR文件中。
来自http://docs.unity3d.com/Manual/StreamingAssets.html:
请注意,在Android上,文件包含在压缩的.jar中 file(基本上与标准zip压缩格式相同) 文件)。这意味着如果你不使用Unity的WWW类 检索文件然后您将需要使用其他软件来查看 在.jar归档文件中并获取文件。
在协程中使用这样的WWW:
WWW data = new WWW(Application.streamingAssetsPath + "/" + fileName);
yield return data;
if(string.IsNullOrEmpty(data.error))
{
content = data.text;
}
或者,如果您真的想保持简单(并且您的文件只有几十万,请将其粘贴在资源文件夹中:
TextAsset txt = (TextAsset)Resources.Load(fileName, typeof(TextAsset));
string content = txt.text;