Can';t在Unity3d(Android)上使用StreamReader从文件中读取行

Can';t在Unity3d(Android)上使用StreamReader从文件中读取行,android,unity3d,filestream,streamreader,Android,Unity3d,Filestream,Streamreader,我需要在android平台上使用StreamReader从文件中读取文本流。该文件大约有10万行,所以若我试图将其全部加载到TextAsset或使用WWW 我只需要逐行读取该文件,而无需将其全部加载到字符串中。然后,我将根据从文件中获得的行生成树。(但这部分可能并不重要,我只需要在文件读取部分得到帮助。) 我给出了我在下面写下的代码。它在编辑器上工作得很好,但在android上失败了 如果有人告诉我,我错过了什么,我会很高兴 (注:英语不是我的母语,这是我在网站上的第一个问题。对于我可能犯的任何

我需要在android平台上使用StreamReader从文件中读取文本流。该文件大约有10万行,所以若我试图将其全部加载到TextAsset或使用WWW

我只需要逐行读取该文件,而无需将其全部加载到字符串中。然后,我将根据从文件中获得的行生成树。(但这部分可能并不重要,我只需要在文件读取部分得到帮助。)

我给出了我在下面写下的代码。它在编辑器上工作得很好,但在android上失败了

如果有人告诉我,我错过了什么,我会很高兴

(注:英语不是我的母语,这是我在网站上的第一个问题。对于我可能犯的任何错误,我深表歉意。)


您不能在Android上使用Application.StreamingAssetPath作为路径,因为流媒体资产存储在应用程序的JAR文件中

发件人:

请注意,在Android上,这些文件包含在一个压缩的.jar中 文件(基本上与标准zip压缩格式相同 文件)。这意味着如果您不使用Unity的WWW类 检索该文件,然后需要使用其他软件才能查看 在.jar归档文件中,并获取该文件

在协同程序中这样使用WWW:

 WWW data = new WWW(Application.streamingAssetsPath + "/" + fileName);
 yield return data;
 if(string.IsNullOrEmpty(data.error))
 {
    content = data.text;
 }
或者,如果您真的想保持简单(并且您的文件只有几个100k,请将其粘贴到资源文件夹中:

TextAsset txt = (TextAsset)Resources.Load(fileName, typeof(TextAsset));
string content = txt.text;

我已经尝试了您前面提到的方法。例如,当我尝试从资源加载它并按如下方式拆分它时:
textaste txt=(textaste)resources.load(filename,typeof(textaste));string[]linesInFile=txt.text.split(“\n”[0]);foreach(linesInFile中的字符串line2){linesRead++;tree.AddWord(line2);}
它适用于包含10行单词的测试文件。但是当我尝试使用原始文件运行unity3d编辑器时,它会冻结。正如我提到的,该文件大约有100k行(接近1mb)那么,我到底遗漏了什么,或者除此之外我还能尝试什么。啊,正确的100K行。是的,我已经看到Unity编辑器将冻结/暂停任何大型文本资源。我相信解决方法是不将其命名为FILE.TXT,而将其命名为FILE.DAT。
TextAsset txt = (TextAsset)Resources.Load(fileName, typeof(TextAsset));
string content = txt.text;