using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace 文件处理
{
class Program
{
// 文本
static void ReadFromText_ByStreamReader_line(string fileName)
{
StreamReader srFile = new StreamReader(fileName,true);
string line = string.Empty;
try
{
while ((line = srFile.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
catch(Exception e)
{
Console.WriteLine("The file could not be read:");
Console.WriteLine(e.Message);
}
srFile.Close();
}
static void ReadFromText_ByStreamReader_char(string fileName)
{
char ch;
try
{
// 创建一个 StreamReader 的实例来读取文件
// using 语句也能关闭 StreamReader
using (StreamReader srFile = new StreamReader(fileName, true))
{
while (srFile.Peek()> -1)
{
ch = (char) srFile.Read();
Console.WriteLine(ch);
}
}
}
catch (Exception e)
{
Console.WriteLine("The file could not be read:");
Console.WriteLine(e.Message);
}
}
static void WriteToText_ByStreamWriter(string fileName)
{
StreamWriter swFile = new StreamWriter(fileName);//如果增加bool值表示是不是增加
swFile.WriteLine("hello world");
swFile.Close();
}
// 二进制
//转换string->byte格式 等效于 byte[] bb = Encoding.UTF8.GetBytes(ss);
public static byte[] StrToByte(string strs)
{
try
{
byte[] returnBytes = new byte[strs.Length];
for(int i = 0; i < returnBytes.Length; i++)
{
returnBytes[i] = Convert.ToByte(strs[i]);
}
return returnBytes;
}catch(Exception ex)
{
Console.WriteLine(ex.Message);
return null;
}
}
// Byte->char[]->string,等效于string s = Encoding.UTF8.GetString(bb);
public static string ByteToCharToString(byte[] b)
{
char[] c = new char[b.Length];
for(int i = 0; i < c.Length; i++)
{
c[i] = (char)b[i];
}
return new string(c);
}
static void ReadFromText_ByBinary_ByteToString(string fileName)
{
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
BinaryReader bw = new BinaryReader(fs);
try
{
byte[] b = bw.ReadBytes(1024);
String s = System.Text.Encoding.UTF8.GetString(b);
// String s = ByteToCharToString(b);
Console.WriteLine(s);
}
catch (EndOfStreamException e)
{
Console.WriteLine(e.Message);
Console.WriteLine("已经读到末尾");
}
finally
{
bw.Close();
fs.Close();
}
}
static void WriteToText_ByBinary_StringToByte(string fileName)
{
FileStream fs = null;
BinaryWriter bw = null;
try
{
fs = new FileStream(fileName, FileMode.Create, FileAccess.Write);
bw = new BinaryWriter(fs);
Console.WriteLine("输入一行字符串");
String temp = Console.ReadLine();
// byte[] buffer = StrToByte(temp);
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(temp);
if (buffer == null)
{
Console.WriteLine("解析失败");
return ;
}
bw.Write(buffer);
}catch(Exception e)
{
Console.WriteLine(e.Message);
}
finally
{
bw.Close();
fs.Close();
}
}
static void WriteToText_ByBinary_Object(string fileName)
{
FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write);
BinaryFormatter bf = new BinaryFormatter();
MyData myData = new MyData();
Console.WriteLine("Int:");
myData.first = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Double:");
myData.second = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("String:");
myData.third = Console.ReadLine();
bf.Serialize(fs, myData);
fs.Close();
}
static void ReadFromText_ByBinary_Object(string fileName)
{
MyData myData = new MyData();
FileStream fileStream = new FileStream(fileName,
FileMode.Open,
FileAccess.Read);
BinaryFormatter binaryFormatter = new BinaryFormatter();
myData = (MyData)binaryFormatter.Deserialize(fileStream);
Console.WriteLine(myData.first);
Console.WriteLine(myData.second);
Console.WriteLine(myData.third);
fileStream.Close();
}
static void Main(string[] args)
{
string fileName = @"C:\Users\Lenovo\Desktop\hello.dat";
// WriteToText_ByBinary_StringToByte(fileName);
ReadFromText_ByBinary_ByteToString(fileName);
}
}
[Serializable]
class MyData
{
public int first;
public double second;
public string third;
}
}
相关知识:
string 转换成 Char[]
string ss = "abcdefg";
char[] cc = ss.ToCharArray();
Char[] 转换成string
string s = new string(cc);
byte[] 与 string 之间的转换
byte[] bb = Encoding.UTF8.GetBytes(ss);
string s = Encoding.UTF8.GetString(bb);
byte[] 与 char[] 之间的转换
byte[] bb;
char[] cc = Encoding.ASCII.GetChars(bb);
byte[] bb = Encoding.ASCII.GetBytes(
cc);