123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- using System;
- using System.IO;
- using System.Text;
- namespace Util
- {
- internal class FileUtil
- {
- //存储文件
- public static FileStream saveFile(string fileName, JSONObject node = null)
- {
- string folder = Path.GetDirectoryName(fileName);
- if (!Directory.Exists(folder))
- Directory.CreateDirectory(folder);
- FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write);
- if (node == null)
- return fs;
- StreamWriter writer = new StreamWriter(fs);
- string encodedString = node.Print(true);
- writer.Write(encodedString);
- writer.Close();
- return fs;
- }
- //获取path2对于path1的相对路径,自己使用,不做非法判断
- public static string getRelativePath(string path1, string path2)
- {
- String relativePath = "";
- String[] pathArr1 = path1.Split('/');
- String[] pathArr2 = path2.Split('/');
- int equalNum = 0;
- for (int i = 0; i < pathArr1.Length - 1; i++)
- {
- if (pathArr1[i] != pathArr2[i])
- break;
- equalNum++;
- }
- for (int j = 0; j < pathArr1.Length - equalNum - 1; j++)
- {
- relativePath += "../";
- }
- for (int j = equalNum; j < pathArr2.Length; j++)
- {
- relativePath += pathArr2[j];
- if (j < pathArr2.Length - 1)
- relativePath += "/";
- }
- return relativePath;
- }
- public static void WriteData(FileStream fs, params Int32[] datas)
- {
- foreach (Int32 data in datas)
- {
- byte[] blockAddressIndexBytes = BitConverter.GetBytes(data);
- fs.Write(blockAddressIndexBytes, 0, blockAddressIndexBytes.Length);
- }
- }
- private static void WriteData(FileStream fs, params long[] datas)
- {
- foreach (long data in datas)
- {
- byte[] blockAddressIndexBytes = BitConverter.GetBytes(data);
- fs.Write(blockAddressIndexBytes, 0, blockAddressIndexBytes.Length);
- }
- }
- public static void WriteData(FileStream fs, params byte[] datas)
- {
- foreach (byte data in datas)
- {
- fs.WriteByte(data);
- }
- }
- public static void WriteData(FileStream fs, params ushort[] datas)
- {
- foreach (ushort data in datas)
- {
- byte[] blockAddressIndexBytes = BitConverter.GetBytes(data);
- fs.Write(blockAddressIndexBytes, 0, blockAddressIndexBytes.Length);
- }
- }
- public static void WriteData(FileStream fs, params short[] datas)
- {
- foreach (short data in datas)
- {
- byte[] blockAddressIndexBytes = BitConverter.GetBytes(data);
- fs.Write(blockAddressIndexBytes, 0, blockAddressIndexBytes.Length);
- }
- }
- public static void WriteData(FileStream fs, params uint[] datas)
- {
- foreach (uint data in datas)
- {
- byte[] blockAddressIndexBytes = BitConverter.GetBytes(data);
- fs.Write(blockAddressIndexBytes, 0, blockAddressIndexBytes.Length);
- }
- }
- private static void WriteData(FileStream fs, params sbyte[] datas)
- {
- //byte[] bs = (byte[])(Array)datas;
- BinaryWriter s = new BinaryWriter(fs);
- foreach (sbyte data in datas)
- {
- //fs.WriteByte(data);
- s.Write(data);
- }
- }
- public static void WriteData(FileStream fs, params float[] datas)
- {
- foreach (float data in datas)
- {
- byte[] blockAddressIndexBytes = BitConverter.GetBytes(data);
- fs.Write(blockAddressIndexBytes, 0, blockAddressIndexBytes.Length);
- }
- }
- private static void WriteData(FileStream fs, params double[] datas)
- {
- foreach (double data in datas)
- {
- byte[] blockAddressIndexBytes = BitConverter.GetBytes(data);
- fs.Write(blockAddressIndexBytes, 0, blockAddressIndexBytes.Length);
- }
- }
- public static void WriteData(FileStream fs, params bool[] datas)
- {
- foreach (bool data in datas)
- {
- byte[] blockAddressIndexBytes = BitConverter.GetBytes(data);
- fs.Write(blockAddressIndexBytes, 0, blockAddressIndexBytes.Length);
- }
- }
- public static void WriteData(FileStream fs, string data)
- {
- byte[] blockAddressIndexBytes = UTF8Encoding.UTF8.GetBytes(data);
- short blocklength = (short)blockAddressIndexBytes.Length;
- WriteData(fs, blocklength);
- fs.Write(blockAddressIndexBytes, 0, blockAddressIndexBytes.Length);
- }
- }
- }
|