最近在写游戏的时候,用到很多读取和写入,现在就带大家简单的了解一下文件的读取和写入(这里我们先说文件的写入,读取我们会在下一篇说)。
我们都知道,要写一个文件或读取一个文件,必须知道文件的路径。
这里我们就以Unity为例,Unity中获取路径的方法:
Application.dataPath(数据路径)
Application.temporaryCachePath(临时路径)
Application. persistentDataPath
(持久数据路径
)
废话先不多说上代码:
using UnityEngine;
using System.Collections;
using System.IO;
using System.Text;
using System;
public class writeTxT : MonoBehaviour {
void Start(){
string name=”write.txt”;
String path=Application.dataPath;
//写入流
writeFile(path,name
);
//追加字符
addFile(path,name
);
//逐个加入
addOneByOne(path)
}
//写入流
void writeFile(string path,string fileName){
FileStream fs = newFileStream(path+"//"+fileName, FileMode.Create); //打开一个写入流
stringstr = "写入文件";
byte[]bytes = Encoding.UTF8.GetBytes(str);
fs.Write(bytes,0, bytes.Length);
fs.Flush(); //流会缓冲,此行代码指示流不要缓冲数据,立即写入到文件。
fs.Close(); //关闭流并释放所有资源,同时将缓冲区的没有写入的数据,写入然后再关闭。
fs.Dispose(); //释放流所占用的资源,Dispose()会调用Close(),Close()会调用Flush(); 也会写入缓冲区内的数据。
}
//追加字符
void addFile(string path,string fileName){
//写入流,追加文本
FileStreamfs = new FileStream(path+"//"+fileName, FileMode.Append,FileAccess.Write); //追加流,权限设置为可写
byte[]bytes = Encoding.UTF8.GetBytes("追加字符");
fs.Write(bytes,0, bytes.Length);
fs.Flush();
}
//写入流,逐个字符逐个字符吸入
void addOneByOne(string path){
//写入流,逐个字符逐个字符吸入
FileStreamfs = new FileStream(path+"//"+"newFile.txt",FileMode.CreateNew, FileAccess.Write); // newFile.txt并写入
byte[]bytes = Encoding.UTF8.GetBytes("逐个字符逐个字符吸入");
foreach(byte b in bytes)
{
fs.WriteByte(b); //逐个字节逐个字节追加入文本
}
fs.Flush();
}
}
代码都写完了,小伙伴时候对上面的有什么疑问,是不是对某些函数不是多了解,那么接下来我们就了解一下,代码里面用到的函数(这里我们简单的了解下)。
FileStream
(具体用法,可以参考:https://msdn.microsoft.com/zh-cn/library/system.io.filestream.aspx)
能够对对系统上的文件进行读、写、打开、关闭等操作。并对其他与文件相关的操作系统提供句柄操作,如管道,标准输入和标准输出。读写操作可以指定为同步或异步操作。FileStream对输入输出进行缓冲,从而提高性能。
提示:为了提高程序的可执行性,我们可以在打开文件的时候进行判断,该文件是否存在
if (Filestream.Exists(文件名)) {
print("this file already exists!");
}else {
print("create file !");
}
或者用
try{
}
catch(System.IO.IOException e) {
}
方法。
就简单的介绍到这里,如有疑问请联系QQ13625263.