您的位置:首页 > 新闻动态 > Unity3D

UNITY3D使用C#脚本的几种读写TXT文本文件的方法

来源: 2019/11/12      点击:
//注意:要读取的文本文件TXT的编码类型要为utf-8,不然会出现中文乱码或者直接不显示,如果是其它编码方式可以把文件
//另保存为UTF-8的格式
using UnityEngine;
using System.Collections;
using System.IO;//用法三的时候需要定义这个
using System.Text;//法二的时候需要使用定义这个
public class GUTexture : MonoBehaviour {
    GUIText m_GUIText;
    public TextAsset m_TextAsset;             //法一 ,这个需要在unity编辑器进行赋值,把.txt文本文件保存在Asset下的     Resources文件夹下,然后把.txt文件拖拽过来进行赋值
    TextAsset m_TextAsset1;
    string m_Str;
    string m_FileName;                             //法二要用
    string[] strs;                                        //法二要用
void Start () {
    m_GUIText = gameObject.GetComponent();               //找到该游戏物体的GUIText组件,用来显示读取到 的文本
    m_FileName = "Z800虚拟头盔说明书链接UTF-8.txt";                       //法二要用,要读取的文件名,这个是相对路径
}
//鼠标进入该游戏物体执行 
void OnMouseEnter() {
   m_GUIText.text = Resources.Load("Z800虚拟头盔说明书链接").text;//法一,需要把文本文件保存在Asset文   件夹下的Resources文件夹内
   // ReadFile(m_FileName);//法二
   //m_GUIText.text = m_Str;//把读取到的内容放到GUIText组件中显示 // Read();//法三
     //m_GUIText.text =m_Str;//把读取到的内容放到GUIText组件中显示
 }
//方法二:通过ReadFile(名字自己定义)方法来读取,传入的是文件路径
void ReadFile(string FileName) {
   strs = File.ReadAllLines(FileName);//读取文件的所有行,并将数据读取到定义好的字符数组strs中,一行存一个单元
   for (int i = 0; i < strs.Length; i++)
   {
    m_Str += strs[i];//读取每一行,并连起来
    m_Str += "\n";//每一行末尾换行
    }
}
//方法三: 下面这个是通过文件流来读取txt文件的方法
public void Read()
    {
        try
        {
            string pathSource = m_FileName;
            using (FileStream fsSource = new FileStream(pathSource,
                        FileMode.Open, FileAccess.Read))
            {
                // Read the source file into a byte array.  
                byte[] bytes = new byte[fsSource.Length];
                int numBytesToRead = (int)fsSource.Length;
                int numBytesRead = 0;
                while (numBytesToRead > 0)
                {
                    int n = fsSource.Read(bytes, numBytesRead, numBytesToRead);
                    if (n == 0)
                        break;
                    numBytesRead += n;
                    numBytesToRead -= n;
                }
                numBytesToRead = bytes.Length;
                //text = Encoding.Default.GetString(bytes);  
                m_Str= UTF8Encoding.UTF8.GetString(bytes);
            }
        }
        catch
        {
            //ioEx.Message  
        }
    }  

//法四
using System.IO;
using System.Text;
Debug.Log(File.ReadAllText("C:\\Users\\zhang\\Desktop\\wiseglove数据手套录制数据.txt", Encoding.Default));                                      // ReadAllText方法第一个参数是要读取txt文件的路径,第二个参数是编码方式,这里采用默认
 
//一种以追加的方式写入txt方法
using System.IO;
using System.Text;
File.AppendAllText("C:\\Users\\zxy\\Desktop\\wiseglove数据手套录制数据.txt", "我被写进来了",Encoding.Default);
//第一个参数是要写入的文件路径,第二个参数是要写入的文本,第三个参数是编码方式
}