/// 将对象序列化为XML数据
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
private byte[] SerializeToXmlBytes(object obj)
{
MemoryStream stream = new MemoryStream();
XmlSerializer xs = new XmlSerializer(obj.GetType());
xs.Serialize(stream, obj);
byte[] data = stream.ToArray();
stream.Close();
return data;
}
/// <summary>
/// 将 Stream 写入文件
/// </summary>
private void StreamToFile(Stream stream, string filepath)
{
// 把 Stream 转换成 byte[]
byte[] bytes = new byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
// 设置当前流的位置为流的开始
stream.Seek(0, SeekOrigin.Begin);
// 把 byte[] 写入文件
FileStream fs = new FileStream(filepath, FileMode.Create);
BinaryWriter bw = new BinaryWriter(fs);
bw.Write(bytes);
bw.Close();
fs.Close();
}
/// <summary>
/// 将XML数据反序列化为指定类型对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="data"></param>
/// <returns></returns>
private static T DeserializeWithXml<T>(byte[] data)
{
MemoryStream stream = new MemoryStream();
stream.Write(data, 0, data.Length);
//注意,在反序列化的时候,将byte[]写入流以后,需要将游标移到首位,即将Position置零,否则反序列化将报错
stream.Position = 0;
XmlSerializer xs = new XmlSerializer(typeof(T));
object obj = xs.Deserialize(stream);
stream.Close();
return (T)obj;
}
/// <summary>
/// 将json的二进制文件转换为string
/// </summary>
/// <param name="json"></param>
/// <returns></returns>
private static String ByteToJsonString(byte[] json)
{
return Encoding.Default.GetString(json, 0, json.Length);
}
/// <summary>
/// 将 Stream 写入文件
/// </summary>
private static void StreamToFile(Stream stream, string filepath)
{
// 把 Stream 转换成 byte[]
byte[] bytes = new byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
// 设置当前流的位置为流的开始
stream.Seek(0, SeekOrigin.Begin);
// 把 byte[] 写入文件
FileStream fs = new FileStream(filepath, FileMode.Create);
BinaryWriter bw = new BinaryWriter(fs);
bw.Write(bytes);
bw.Close();
fs.Close();
}
/// json字符反序列化为对象
/// </summary>
/// <typeparam name="T">实体类型</typeparam>
/// <param name="json">json字符串</param>
/// <param name="encoding">编码格式</param>
/// <returns>T</returns>
public static T JsonToObject<T>(string json, Encoding encoding)
{
T resultObject = default(T);
try
{
resultObject = Activator.CreateInstance<T>();
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
using (var ms = new MemoryStream(encoding.GetBytes(json)))
{
resultObject = (T)serializer.ReadObject(ms);
}
}
catch(Exception)
{
//ignore
}
return resultObject;
}
/// <summary>
/// 将对象序列化为XML数据
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
private static byte[] SerializeToXmlBytes(object obj)
{
MemoryStream stream = new MemoryStream();
XmlSerializer xs = new XmlSerializer(obj.GetType());
xs.Serialize(stream, obj);
byte[] data = stream.ToArray();
stream.Close();
return data;
}
/// 文件转化成byte[]数组
/// </summary>
/// <param name="fileName">文件名</param>
/// <returns></returns>
private byte[] FileContent(string fileName)
{
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
try
{
byte[] buffur = new byte[fs.Length];
fs.Read(buffur, 0, (int)fs.Length);
return buffur;
}
catch (Exception ex)
{
return null;
}
finally
{
if (fs != null)
{
fs.Close();
}
}
}