Unity下关于C#的文件读写(基于TXT和LitJson)

1.http://tieba.baidu.com/p/2825006787?see_lz=1([Unity3D] 关于txt,xml,json文件的读写,及外部文件(夹)的创建)

NOTE (基本认识):其实.txt,.xml,.json这类文件都属于文本文件,类似的还有.lrc歌词文件,.ini配置文件,.reg注册表文件等等,这类文件所储存的内容都是文本(即为字符串),只是各自有它们自己的格式,便于某些时候专用识别,所以读取txt文本是最基础的文本解析。

基本的txt读取


静态内部读取txt文本: 
最简单的方式,建立TextAsset,直接把文本文件拖上去,就可以用了, 
public TextAsset TxtFile; 
print(TxtFile.text); 
这是直接获取文本,也就是string类型的字符串。 
Note:txt文本的编码格式,要改为UTF-8格式,否则读不出来,虽然不会报错。

动态内部读取文本: 
把txt文件放在resources文件夹,利用Resources.Load加载:

public TextAsset TxtFile;
private string Mytxt;

void Start()
{
Mytxt=(TextAsset)Resources.Load("MyTest").text;
print(Mytxt);
}

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

外部读取文本: 
外部读取文本需要导入System.IO类,主要使用这个类的File类,具体API请查MSDN(https://msdn.microsoft.com/zh-cn/library/system.io(v=vs.80).aspx),这里只是简单的调用读取。要注意的是平台在PC

下面是一些写好的案例:

//返回整个文本字符串
    string[] ReadAllFile(string FileName)
    {
        string[] strs;
        return strs = File.ReadAllLines(FileName);
    }
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
//读取文本某一行字符串
 string ReadALine(string FileName,int linenumber) // 参数1:打开的文件(路径+文件命),参数2:读取的行数
    {
        string[] strs = File.ReadAllLines(FileName);
        if(linenumber==0)
        {
            return "0";
        }
        else
        {
            return strs[linenumber - 1];
        }
    }
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
 /*重写TXT文档*/
 void WriteAllFile(string FileName,string txt)// 参数1:打开的文件(路径+文件命),参数2:重写所有文档的字符串
    {
        string[] str = txt.Split(';');
        File.WriteAllLines(FileName,str);
    }
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
 //在TXT文档中插入行
    void WriteALine(string FileName, string txt,int lineNumber)// 参数1:打开的文件(路径+文件命),参数2:重写某行的字符串,参数3,插入的行数
    {
        string[] str = File.ReadAllLines(FileName);
        int strLinesLength = str.Length;
        string[] strNew = new string[strLinesLength + 1];

        bool haveAddLine = false;//是否已经插入行

        for(int i=0;i< strLinesLength + 1;++i )
        {
            if(i==lineNumber-1) //到达插入行,插入并跳过此次下面的添加
            {
             strNew[i] = txt;
            haveAddLine = true;
            }
            else if(!haveAddLine)//还没插入新建行时
            {
              strNew[i] = str[i];
            }
            else//插入之后
            {
              strNew[i] = str[i - 1];
            }              
        }
        File.WriteAllLines(FileName, strNew);
    }
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值