Unity各类基础数据库的基本操作(一)

Unity各类基础数据库的基本操作(一)--TXT

对数据库的操作无非是增删改查。

在采取对TXT数据库文件操作时,注意先引用命名空间:

I/O操作的明明空间:

using System.IO

Unity编辑器的命名空间:
using UnityEditor;

1.首先是创建写入数据

/// <summary>
    /// 创建并写入数据
    /// </summary>
    /// <param name="path">Path.文件路径</param>
    /// <param name="name">Name.文件名称</param>
    /// <param name="info">Info.要写入的信息</param>

void CreateFile(string path,string name,string info)
    {
        StreamWriter sw;//写入流
        //定义一个文本
        FileInfo fi = new FileInfo(path + "//" + name);
        //如果文本不存在,创建路径
        if (!fi.Exists) {
            sw = fi.CreateText();
        } else {
        //如果存在,打开
            sw = fi.AppendText();
        }//现在这个fi一定存在

        //以行的形式写入信息
        sw.WriteLine(info);
        //关闭流
        sw.Close();
        //销毁流
        sw.Dispose();

    }

2.读取数据

/// <summary>
    /// 读取数据
    /// </summary>
    /// <returns>The file.文件信息</returns>
    /// <param name="">.文件名称</param>
    ArrayList LoadFile(string path ,string name){
        StreamReader sr;//读取流
        try {//尝试,视图
            //两个方法是一样的,File是静态类,FileInfo:是普通类
            sr = File.OpenText(path + "//" + name);

//            FileInfo fi = new FileInfo(path + "//"+ name);
//            sr = fi.OpenText();
        } catch (System.Exception ex) {//捕获,Exception:异常(运行时出现的错误)
            return null;//抛出捕获的异常
            
        }

        string strLine;//行的信息
        ArrayList arrayList = new ArrayList();
        //不为空,则一直循环,也就是sr.ReadLine阅读到了内容
        while((strLine = sr.ReadLine())!= null){
            //吧阅读到的内容添加到ArrayList中
            arrayList.Add (strLine);
        }
        //关闭流
        sr.Close();
        //销毁流
        sr.Dispose();
        return arrayList;
    }


File和FileInfo的区别:
     File是静态类,他对应整个系统进行操作,方法均为静态方法,如果只是对文件进行少量的操作,
  如判断文件是否存在之类的,或者对很多的文件精心操作,
  建议使用File类,因为可以避免频繁创建和释放对象的系统开销
     FlieInfo是一个实例类(普通类),它对应一个具体的文件进行操作,方法大部分是普通方法,
  它里面的操作可能是调用的File类里面的静态方法,如果是对一个文件进行大量操作,建议使用FileInfo
 
    在安全检查方面,通过File类去掉用某个方法,都要占用CPU一定的处理时间来进行安全检查
  即使是使用File类不同的方法重复对一个文件访问时,也是如此,而FileInfo类只在创建FileinFo对象的时候执行一次安全检查

3.删除数据

void DeleteFile(string path ,string name){
    
        //两个方法,静态,普通
        File.Delete (path + "//" + name);

//        FileInfo fi = new FileInfo (path + "//" + name);
//        fi.Delete ();
    }
4.调用这些方法

if (Input.GetKeyDown(KeyCode.C)) {
            //实例化写入的方法,传入“Application.dataPath”路径和文件名,“要写入的内容”,三个参数
            CreateFile (Application.dataPath,"Test01.txt","TXT数据库测试01");
            CreateFile (Application.dataPath, "Test01.txt", "TXT数据库测试02");
            //刷新project视图
            AssetDatabase.Refresh();
        }
        if (Input.GetKeyDown(KeyCode.R)) {
            //实例化读取数据的方法,传路径,读取的文件名,因为方法里返回一个ArrayList,所以需要接受一下
            _ArrayList = LoadFile (Application.dataPath, Test01.txt");
            //遍历,打印出来
            foreach (string item in _ArrayList) {
                print (item);
            }
        }
        if (Input.GetKeyDown(KeyCode.D)) {
            DeleteFile (Application.dataPath,"Test01.txt");
            //预编译命令
            #if UNITY_EDITOR_OSX  //运行平台名称,这用的是Mac
            //刷新project视图,AssetDatabase:数据库,Refresh:刷新
            AssetDatabase.Refresh();
            #elif UNITY_ANDROID
            print(111);
            #endif

        }


源代码:


using UnityEngine;
using System.Collections;
using System.IO;//I/O操作的命名空间
using UnityEditor;//Unity编辑器的命名空间



public class Data_TxT : MonoBehaviour 
{
	//定义一个数组
	private ArrayList _ArrayList;

	void Start () 
	{
		//打印路径名
		print (Application.dataPath);
	}//end_Start
	
	void Update () 
	{
		if (Input.GetKeyDown(KeyCode.C)) {
			//实例化写入的方法,传入“Application.dataPath”路径和文件名,“要写入的内容”,三个参数
			CreateFile (Application.dataPath,"Test01.txt","TXT数据库测试01");
			CreateFile (Application.dataPath, "Test01.txt", "TXT数据库测试02");
			//刷新project视图
			AssetDatabase.Refresh();
		}
		if (Input.GetKeyDown(KeyCode.R)) {
			//实例化读取数据的方法,传路径,读取的文件名,因为方法里返回一个ArrayList,所以需要接受一下
			_ArrayList = LoadFile (Application.dataPath, "Test01.txt");
			//遍历,打印出来
			foreach (string item in _ArrayList) {
				print (item);
			}
		}
		if (Input.GetKeyDown(KeyCode.D)) {
			DeleteFile (Application.dataPath,"Test01.txt");
			//预编译命令
			#if UNITY_EDITOR_OSX
			//刷新project视图,AssetDatabase:数据库,Refresh:刷新
			AssetDatabase.Refresh();
			#elif UNITY_ANDROID
			print(111);
			#endif




		}
	}//end_Update

	/// <summary>
	/// 创建并写入数据
	/// </summary>
	/// <param name="path">Path.文件路径</param>
	/// <param name="name">Name.文件名称</param>
	/// <param name="info">Info.要写入的信息</param>
	void CreateFile(string path,string name,string info)
	{
		StreamWriter sw;//写入流
		//定义一个文本
		FileInfo fi = new FileInfo(path + "//" + name);
		//如果文本不存在,创建路径
		if (!fi.Exists) {
			sw = fi.CreateText();
		} else {
		//如果存在,打开
			sw = fi.AppendText();
		}//现在这个fi一定存在

		//以行的形式写入信息
		sw.WriteLine(info);
		//关闭流
		sw.Close();
		//销毁流
		sw.Dispose();

	}

	/// <summary>
	/// 读取数据
	/// </summary>
	/// <returns>The file.文件信息</returns>
	/// <param name="">.文件名称</param>
	ArrayList LoadFile(string path ,string name){
		StreamReader sr;//读取流
		try {//尝试,视图
			//两个方法是一样的,File是静态类,FileInfo:是普通类
			sr = File.OpenText(path + "//" + name);

//			FileInfo fi = new FileInfo(path + "//"+ name);
//			sr = fi.OpenText();
		} catch (System.Exception ex) {//捕获,Exception:异常(运行时出现的错误)
			return null;//抛出捕获的异常
			
		}

		string strLine;//行的信息
		ArrayList arrayList = new ArrayList();
		//不为空,则一直循环,也就是sr.ReadLine阅读到了内容
		while((strLine = sr.ReadLine())!= null){
			//吧阅读到的内容添加到ArrayList中
			arrayList.Add (strLine);
		}
		//关闭流
		sr.Close();
		//销毁流
		sr.Dispose();
		return arrayList;
	}

	void DeleteFile(string path ,string name){
	
		//两个方法,静态,普通
		File.Delete (path + "//" + name);

//		FileInfo fi = new FileInfo (path + "//" + name);
//		fi.Delete ();
	}

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值