How do I read and write data from a text file?


  • I want to read and write data from a text file that can be in a specific directory or among my other Assets.


If you don’t want to read the file from a directory, you can assign the Asset directly from the Editor using an exposed property of type TextAsset (as you can see in Figure 1) and get the text of the file the using the TextAsset.text property.

Figure 1. Text file assigned to a TextAsset

Another way to read and write data from a text file that’s in a specific directory is to use the StreamWriter and StreamReader classes from the System.IO namespace to access characters from a byte stream and then load the file as a TextAsset in Unity.

The following example Editor script prints the data from a file (if it exists) or writes text to a file in the specified path.

using UnityEngine;
using UnityEditor;
using System.IO;

public class HandleTextFile
    [MenuItem("Tools/Write file")]
    static void WriteString()
        string path = "Assets/Resources/test.txt";

        //Write some text to the test.txt file
        StreamWriter writer = new StreamWriter(path, true);

        //Re-import the file to update the reference in the editor
        TextAsset asset = Resources.Load("test");

        //Print the text from the file

    [MenuItem("Tools/Read file")]
    static void ReadString()
        string path = "Assets/Resources/test.txt";

        //Read the text from directly from the test.txt file
        StreamReader reader = new StreamReader(path); 


More Information

For more information, consult the following documentation:

Was this article helpful?
10 out of 11 found this helpful
Have more questions? Submit a request


  • 0
    Nishal John

    This was exactly what I was looking for to create a Log System. Thanks!

  • 3

    Does streamwritting work on all platforms, mobile & webplayer for example?

  • 0
    Fran D.

    The [MenuItem("Tools/XXXX file")] part is misleading because is not needed to solve the problem and what is worse it's use (which is not straightforward) it's not explained: not even a screenshot nor anything


  • 2
    Andrew Watson

    If you are developing for Hololens or mixed reality, you'll need to pass a stream in. This works fine for working in the editor, but when you try to build a solution under Universal Windows Platform, you'll get an error. Here's what I did:


    using (StreamWriter sw = new StreamWriter(new FileStream("Assets/" + FileName + ".txt", FileMode.OpenOrCreate, FileAccess.Write)))

    string line = "";

    //logic logic logic


    catch (Exception e)




    Edited by Andrew Watson
  • 0
    Contractor Nation

    perfect! I needed TextAsset.text for Quest to read from Assets/myFile.html and used StreamWriter for Quest to write to /sdcard/Android/data/myPkgId/files, and a PC player can access the sdcard via adb

Please sign in to leave a comment.