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

来源:互联网 发布:FGO黑贞各礼装伤害数据 编辑:程序博客网 时间:2024/06/05 11:43

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_Startvoid 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_ANDROIDprint(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 ();}}



0 0
原创粉丝点击