- Home /
Reading a .txt file not working?
For some reason when i try to get it to Load the .txt file it just says that the file could not be found
using UnityEngine;
using System.Collections;
using System.Text;
using System.IO;
public class TextCar : MonoBehaviour
{
public TextAsset text;
void Start()
{
Load (text.name);
}
private bool Load(string fileName)
{
// Handle any problems that might arise when reading the text
try
{
string line;
// Create a new StreamReader, tell it which file to read and what encoding the file
// was saved as
StreamReader theReader = new StreamReader(fileName, Encoding.Default);
// Immediately clean up the reader after this block of code is done.
// You generally use the "using" statement for potentially memory-intensive objects
// instead of relying on garbage collection.
// (Do not confuse this with the using directive for namespace at the
// beginning of a class!)
using (theReader)
{
// While there's lines left in the text file, do this:
do
{
line = theReader.ReadLine();
if (line != null)
{
// Do whatever you need to do with the text line, it's a string now
// In this example, I split it into arguments based on comma
// deliniators, then send that array to DoStuff()
string[] entries = line.Split(',');
if (entries.Length > 0)
Debug.Log(entries);
}
}
while (line != null);
// Done reading, close the reader and return true to broadcast success
theReader.Close();
return true;
}
}
// If anything broke in the try block, we throw an exception with information
// on what didn't work
catch (IOException e)
{
Debug.Log(""+e.Message);
return false;
}
}
}
I don't know the specific problem, but there are a couple of strange things going on here. First, you are passing 'text.name' to the Load() function. 'text.name' will be the name of the game object. Is your file really named the same as this game object? And is that file at the default path (since you don't use a path) for a StreamReader().
The other strangeness is the use of TextAsset at all. Typically in a script like this, you would put a Text file in the project. Then you would drag and drop that file on the public TextAsset variable ('text' in this case). After doing so, there would be no need for a StreamReader(). You could get the whole text of the file using text.text. To build your lines, you would first have to split the whole text using the '\n' and '\r' characters and then split on commas like you do on line 42.
Answer by Saad_Khawaja · Jul 17, 2014 at 09:18 AM
From the code, I'm assuming you want to read the text file line by line.
You don't need to use StreamReader for that. You can simply use TextAsset, split it and then read the string[] line by line.
public TextAsset TextFile;
void readTextFileLines() {
string[] linesInFile = TextFile.text.Split('\n');
foreach (string line in linesInFile)
{
Debug.Log(line);
}
}
Your answer
![](https://koobas.hobune.stream/wayback/20220613154206im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
creating txt file 2 Answers
Read a specific line from .txt file. 3 Answers
Reading a .txt File 3 Answers
Unity iPhone - Using the file system in my app/game? 1 Answer
Saving My World 1 Answer