private static void TestSwitch()
{
string path = "a.txt";
lab1:
Console.WriteLine("Input Key R Read Or W Write:");
ConsoleKeyInfo inputKey = Console.ReadKey();
Console.WriteLine();
Stream fileStream = null;
if (inputKey.Key == ConsoleKey.W)
{
fileStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Write, 1024);
}
else if (inputKey.Key == ConsoleKey.R)
{
fileStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read);
}
else
{
Console.WriteLine("not Valid Input key");
Console.WriteLine();
goto lab1;
}
string mgs = string.Empty;
switch (fileStream)
{
case FileStream writeableFile when writeableFile.CanWrite:
Console.WriteLine("please input save words:");
string saveStr = Console.ReadLine();
fileStream.Write(Encoding.UTF8.GetBytes(saveStr));
break;
case FileStream streamR when streamR.CanRead:
StringBuilder readStrsb = new StringBuilder();
byte[] buf = new byte[1024];
int readNu = 0;
while ((readNu = fileStream.Read(buf)) > 0)
{
readStrsb.Append(Encoding.UTF8.GetString(buf, 0, readNu));
}
;
Console.WriteLine($"Read Stream : {readStrsb}");
break;
case MemoryStream mStream:
Console.WriteLine("MemoryStream Position "+mStream.Position);
break;
default:
Console.WriteLine("unknown error");
break;
}
#region 流行写法
string mgs = fileStream switch
{
FileStream fs when fs.CanWrite => GetWriteStr(fs),
FileStream fs when fs.CanRead => GetReadStr(fs),
MemoryStream ms => "此处怎么写一个lambda 表达式",
_ => " this Stream is null",
};
#endregion
//fileStream.Flush();
fileStream.Close();
fileStream.Dispose();
Console.WriteLine("oper complete");
}
private static string GetReadStr(FileStream fs)
{
//一通操作
StringBuilder readStrsb = new StringBuilder();
byte[] buf = new byte[1024];
int readNu = 0;
while ((readNu = fs.Read(buf)) > 0)
{
readStrsb.Append(Encoding.UTF8.GetString(buf, 0, readNu));
}
;
Console.WriteLine($"Read Stream : {readStrsb}");
return "ok";
}
private static string GetWriteStr(FileStream fs)
{
//一通操作
return "ok";
}