数据传输要 using System.IO (I==>Input,O==>Output) IO流:指数据输入输出流
传输txt要 using System.Text
处理文件夹:
类名:Directory
Str = "\n" :默认情况下(\)符号在字符串表示转义符
Str = @"\n":如果在前面加@符号,那么(\)将作为字符存在,不代表转义符,即@符号用于取消转义
Directory.GetCurrentDirectory(); 当前应用程序绝对路径
Directory.Exists(@"C:\hehe\新建文件夹") ==> 返回bool值,判断文件夹路径是否存在
Directory.GreateDirectory(@"C:\hehe\新建文件夹") ==> 创建文件夹
Directory.Delete(@"C:\hehe\新建文件夹", true) ==> 删除文件夹
Directory.Move(@"C:\hehe\新建文件夹",@"C:\lol\新建文件夹") ==>移动文件夹,也可以用这个方法实现文件夹重命名
string[] files = Directory.GetFiles(@"C:\hehe\新建文件夹") ==> 获取路径文件夹下的所有文件
string[] dires = Directory.GetDirectories(@"C:\hehe\新建文件夹") ==> 获取路径下的所有文件夹
类名:File
File.Delete(@"C:\hehe\新建文件夹\hehe.jpg") ==> 删除指定文件,注意文件后缀
File.Move(@"C:\hehe\新建文件夹\hehe.jpg") ==> 移动指定文件
File.Copy(@"C:\hehe\新建文件夹\hehe.jpg",@"C:\hehe\新建文件夹\lol.jpg") ==>拷贝,前后名字可以不一样,后缀也可以不一样
FileStream fs = File.Create(@"C:\hehe\新建文件夹\haha.txt") ==> 创建文件
File.Exists(@"C:\hehe\新建文件夹\haha.txt") ==> 返回一个bool,判断文件是否存在
FileMode枚举类型:
Open 打开一个已有文件
Create 创建一个新文件,如果存在旧覆盖的方式覆盖掉旧文件
GreateNew 创建一个新文件,文件必须是不存在的
OpenOrCreate 文件存在则打开,否则创建一个新文件
Append(追加) 在文本最后面开始==>即把游标放在文本最后(默认一般是打开文件时,游标在最前面)
FileSteam 类
FileStream.Read(byte[](读取出来的数据放这里),int(从字节数组第几位开始存),bytes.lenght(提供多少个位置来存放读取的内容))
FileStream.Write(byte[](写入文件的内容转成字节数组)),int(从字节数组第几位开始写入),bytes.lenght(从字节数组中写入多少位))
FileStream.Seek(0(决定向前移动还是向后移动),seekOrigin(从什么位置开始移动))
三个字节代表一个中文
读取文件流程
using System.IO;
using System.Text;
.......
public const string filePath = @"C:\hehe\lol.txt";
public const int BUFF_SIZE = 10;
public string msg = "hehehehehe";
if (File.Exists(filePath)) //文件是否存在
{
FileStream fs = File.Open(filePath,FileMode.Open); //存在就打开
byte[] bytes = new byte[BUFF_SIZE];
fs.Read(bytes, 0, bytes.Length); //字节数组,从字节数组第几位开始存,提供多少位置存
string str = new UTF8Encoding().GetString(bytes);//把字节数组转成字符串
Debug.Log(str);
fs.Close(); //只要打开,结束使用时就必须CLOSE和
DISPOSE
fs.Dispose();
}
else
{
FileStream fs = File.Create(filePath); //不存在就创建
byte[] bytes = new byte[BUFF_SIZE];
bytes = new UTF8Encoding().GetBytes(msg);//把字符串转成字节数组
fs.Write(bytes, 0, bytes.Length);
Debug.Log("save");
fs.Close();
fs.Dispose();
}
StreamReader 类 (文本读取器(只能读文本))
StreamReader sr = new StreamReader(path(路径),System.Text.Ecoding.UTF8(格式));
string str = sr.ReadLine();(只读一行)
string str = sr.ReadToEnd();(全读)
StreamWriter 类 (文本写入(写入文本))
StreamWriter sw = new StreamWriter(file(路径))
StreamWriter sw = new StreamWriter(file(路径),true(是否追加(游标位置)),System.Text.Encoding.UTF8(格式))
sw.Write("hehe");
//从字节数组转成图片
Texture2D t = new Texture2D(512,512);
t.LoadImage(bytes); ===>返回一个bool值判断转换是否成功,如果成功把值给t
return t;
WWW 类
加载网络方法: @"https:// baidu.com/xxx/xxx/fafa.gif"
加载本地方法: @"file:// C:\桌面\111.png"
写入协程里==> while(!www.isDone){www.progress ...还有多久完成 .....yield return null } 每帧做一次 或者yield return www;
IEnumerator LoadTextureByHttp
{
WWW www = new WWW(filePath);
yield return www;
if(www! = null && string.IsNullOrEmpty(www.error))
{
image.texture = www.texture;
image.SetNaticeSize();
}
else Debug.LogError("GG");
}
Json 使用固定文本格式来存储和表示数据
Json键值对:使用(:)冒号来区分,冒号右边的部分是"键",键都是使用引号("")包裹的字符串,每个键值对之间用逗号分隔,
例: { "name":"ling" }
花括号:表示对象 ==>花括号中每一个键值对都表示这个对象里的变量和变量所对应的值,键名对应对象里的变量名,值对应这个变量名为键名的这个变量所对应的值
方括号:表示数组 ==> 例: {"table":[1,2,3]} ==>数组里是值类型
值的取值:
数字(整数或浮点)
字符串(用双引号包裹)
bool(true,false)
数组(在方括号中)
对象(花括号中)
null
json初学者输入易犯错误:
所有("")都是英文,不要出现中文
花括号与方括号前后是否能对应上
最后一个数据后面是否有逗号
差错直接百度json在线解析
{
"table": [
[2, 4, 5],
[1, 1, 1]
],
"name": "ling"
}
JsonUtility.ToJson() ==>括号里填object类型的东西 例如 一个类
JsonUtility.ToJson(object,bool) ==>bool指是否带有格式的转化
这里要转成json必须要序列化
序列化:把对象转换成字节序列的过程称为序列化
反序列化:把字节序列转换成对象的过程
类/结构体名上面空的一行上加[System.Serializable] ,变量名上面一行加[SerializeField] 后才表示这个类/结构体或这个变量名是可以序列化的,然后才能用ToJson方法
枚举不用serializable
JsonUtility.FromJson
MyClass myClass = new MyClass(); myClass = JsonUtility.FromJson
常见报错:
Argument Exception json格式错了
NullReferenceException 类未加序列化标识
除了Resources文件夹外的其他几个重要文件夹及其各平台路径:
StreamingAssets
PCWIN/MAC path = Application.dataPath + "/StreamingAssets";
IOS path = Application.dataPath + "/Raw";
Android path = "jar:file://" + Application.dataPath + "!/assets/"; ==>不要用StreamReader读,只能用WWW读
Application.persistentDataPath 一般可以用来放存档
WIN path = C:/Users/xxx/AppData/LocalLow/CompanyName/ProductName
Mac path = /Users/xxx/Library/Caches/CompanyName/Product Name
IOS path = Application/xxxxxxxx/Documents
Android path = /data/data/xxx.xxx.xxx/files 或 /Android/data/com.company.xxx/files