关于Stream冬季大促销:半价GTA5轻松收入囊中和gta5steam打折2021的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于.NETFileStream文件流,StreamRead
关于Stream冬季大促销:半价GTA5轻松收入囊中和gta5steam打折2021的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于.NET FileStream文件流,StreamReader文本流,MemoryStream内存流几种流的实例、c – 如何将istringstream和ifstream分配给istream变量?、c# – 为什么StreamReader.EndOfStream属性更改BaseStream.Position值、c#FileStream读取StreamReader EndOfStream存在问题等相关知识的信息别忘了在本站进行查找喔。
本文目录一览:- Stream冬季大促销:半价GTA5轻松收入囊中(gta5steam打折2021)
- .NET FileStream文件流,StreamReader文本流,MemoryStream内存流几种流的实例
- c – 如何将istringstream和ifstream分配给istream变量?
- c# – 为什么StreamReader.EndOfStream属性更改BaseStream.Position值
- c#FileStream读取StreamReader EndOfStream存在问题
Stream冬季大促销:半价GTA5轻松收入囊中(gta5steam打折2021)
今晨,Steam冬季大促正式拉开序幕,G胖牌收银机又到了开足马力工作的时候,时间持续到1月3号。首日上线优惠的大作名单中有《毁灭战士》系列、《巫师3》年度版、《GTA 5》、《文明》全系、《全境封锁》、《正当防卫3》等等。
>
比如《全境封锁》现在半价,国区售价104元,A卡合作游戏《毁灭战士4》大降67%,售价65元,《文明》全系有10%~76%的优惠,其中《文明6》降价10%卖179元,经典的《文明3》仅4元,《文明4》仅16元。另外,开放世界动作游戏《正方防卫3》大降75%卖40元,《GTA 5》半价卖94元,《巫师3》年度版(全DLC)降价41%卖94元(《狂猎》仅63元)。
>
目前,Steam国区支持支付宝、微信、腾讯财付通、银联等多种支付方式。
.NET FileStream文件流,StreamReader文本流,MemoryStream内存流几种流的实例
一、FileStream文件流
1.读取数据
1 public class ReadFile
2 {
3 /// <summary>
4 /// 读取文件
5 /// FileMode.Create 创建一个新文件,如果文件已经存在则改写旧文件
6 /// FileMode.CreateNew 创建一个文件,如果文件存在会发生异常,提示文件已经存在
7 /// FileMode.Open 打开文件,如果文件不存在则异常
8 /// FileMode.OpenOrCreate 打开文件,如果文件不存在,则创建一个新的文件并且打开文件
9 /// FileMode.Append 打开现有文件,并且在现有文件内容后面追加,如果文件不存在则异常
10 /// FileMode.Truncate 根据现有操作系统,截取文件里面的内容,如果文件不存在则异常
11 /// </summary>
12 public static void Read(string FilePath)
13 {
14 FileStream fileStream = null;
15 try
16 {
17 fileStream = new FileStream(FilePath, FileMode.Truncate);
18 byte[] bytes = new byte[fileStream.Length];
19 int read = fileStream.Read(bytes, 0, bytes.Length);
20 var result = Encoding.UTF8.GetString(bytes);
21 }
22 catch (Exception e)
23 {
24 if (fileStream != null)
25 {
26 fileStream.Dispose();
27 }
28 Console.WriteLine(e.Message);
29 }
30 finally
31 {
32 if (fileStream != null)
33 {
34 fileStream.Close();
35 fileStream.Dispose();
36 }
37 }
38 }
39 }
2.写入数据
1 public class WriteFile
2 {
3 public static void WriteText(string FilePath,string writeString)
4 {
5 FileStream fileStream = null;
6 try
7 {
8 //根据路径打开文件
9 fileStream = new FileStream(@"C:\Users\Administrator\source\repos\OperatFile\OperatFile\1.txt", FileMode.Append);
10 //把字符串转化成字节
11 byte[] bytes = Encoding.UTF8.GetBytes(writeString);
12 //写入到文件
13 fileStream.Write(bytes, 0, bytes.Length);
14 }
15 catch (Exception e)
16 {
17 if (fileStream != null)
18 {
19 fileStream.Dispose();
20 }
21 Console.WriteLine(e.Message);
22 }
23 finally
24 {
25 //关闭和释放
26 if (fileStream != null)
27 {
28 fileStream.Close();
29 fileStream.Dispose();
30 }
31 }
32 }
33 }
二、StreamReader文本流
1.读取数据
1 public class SteamReadFile
2 {
3 /// <summary>
4 /// 读取文件
5 /// </summary>
6 /// <param name="filePath">文件路径</param>
7 public static void ReadFile(string FilePath)
8 {
9 try
10 {
11 using (StreamReader sr = new StreamReader(FilePath))
12 {
13 var result = sr.ReadToEnd();
14 Console.WriteLine(result);
15 }
16 }
17 catch (Exception e)
18 {
19
20 throw new Exception(e.Message);
21 }
22 }
23 }
2.写入数据
1 public class StreamWriteFile
2 {
3 /// <summary>
4 /// 写入文件
5 /// </summary>
6 /// <param name="FilePath">文件路径</param>
7 /// <param name="WriteString">待写入字符串</param>
8 public static void WriteFile(string FilePath,string WriteString)
9 {
10 try
11 {
12 using (StreamWriter sr = new StreamWriter(FilePath))
13 {
14 sr.WriteLine(WriteString);
15 }
16 }
17 catch (Exception e)
18 {
19 throw new Exception(e.Message);
20 }
21 }
22 }
3.写入日志实例
1 public class LogHelper
2 {
3 /// <summary>
4 /// 文件路径
5 /// </summary>
6 public static string FilePath = @"C:\Users\Administrator\source\repos\OperatFile\OperatFile\Files";
7 static LogHelper()
8 {
9 //判断文件夹是否存在,如果不存在,则重新创建
10 if (!Directory.Exists(FilePath))
11 {
12 Directory.CreateDirectory(FilePath);
13 }
14 }
15 /// <summary>
16 /// 日志写入
17 /// Path.Combine(str1,str2,str3) 把传入的参数拼接起来,然后返回新的字符串
18 /// File.AppendText(fullPath) 根据文件路径,把新写入的内容,拼接到文本后面
19 /// </summary>
20 public static void WriteLog()
21 {
22 try
23 {
24 var sb = BindData();
25 string fullPath = Path.Combine(FilePath, $"{DateTime.Now.ToString("yyyy-MM-dd")}.txt");
26 //判断文件是否存在,如果不存在,则新建文件
27 if (!File.Exists(fullPath))
28 {
29 File.Create(fullPath);
30 }
31 using (StreamWriter sw = File.AppendText(fullPath))
32 {
33 sw.WriteLine(sb.ToString());
34 }
35 }
36 catch (Exception e)
37 {
38 throw new Exception(e.Message);
39 }
40
41 }
42 /// <summary>
43 /// 绑定日志信息
44 /// </summary>
45 /// <returns></returns>
46 private static StringBuilder BindData()
47 {
48 StringBuilder sb = new StringBuilder();
49 DateTime operatDateTime = DateTime.Now;
50 string content = "读写文件功能";
51 string operators = "小明";
52 sb.AppendLine($"操作时间:{operatDateTime}");
53 sb.AppendLine($"操作内容:{content}");
54 sb.AppendLine($"操作人:{operators}");
55 sb.AppendLine("------------------------------------------------------------------------------------------");
56 return sb;
57 }
58 }
三、MemoryStream内存流
1 /// <summary>
2 /// 根据URL读取内容到内存流
3 /// </summary>
4 /// <param name="url"></param>
5 /// <returns></returns>
6 public static string DownLoadByUrl(string url)
7 {
8 string result = string.Empty;
9 MemoryStream ms = null;
10 HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
11 HttpWebResponse response = request.GetResponse() as HttpWebResponse;
12 using (var stream = response.GetResponseStream())
13 {
14 byte[] buffer = new byte[response.ContentLength];
15 int actuallyRead = 0, offset = 0;
16 do
17 {
18 actuallyRead = stream.Read(buffer, offset, buffer.Length - offset);
19 offset += actuallyRead;
20
21 } while (actuallyRead > 0);
22 ms = new MemoryStream(buffer);
23 ms.Seek(0, SeekOrigin.Begin);
24 var byteArray = new byte[ms.Length];
25 ms.Read(byteArray, 0, byteArray.Length);
26 result = Encoding.UTF8.GetString(byteArray);
27 }
28 response.Close();
29 response.Dispose();
30 return result;
31 }
c – 如何将istringstream和ifstream分配给istream变量?
std::ifstream file(this->_path)
和
std::istringstream iss(stringSomething);
至
std::istream is
我试过将它们分配给istream变量,就像我从其他从同一基类继承的对象那样,但是没有用.
如何将istringstream和ifstream分配给istream变量?
解决方法
//Note that std::unique_ptr is better that raw pointers std::unique_ptr<std::istream> stream; //stream holds a file stream stream = std::make_unique<std::ifstream>(std::ifstream{ this->_path }); //stream holds a string stream = std::make_unique<std::istringstream>(std::istringstream{});
现在你只需要使用提取内容
std::string s; (*stream) >> s;
c# – 为什么StreamReader.EndOfStream属性更改BaseStream.Position值
在random.txt中,我有一行文字:ABCDEFGHIJKLMnopRST.我得到了预期的结果:
> A的位置为0
> F的位置是5
> K的位置是10
> P的位置是15
这是代码:
static void Main(string[] args) { StreamReader fp; int n; fp = new StreamReader("d:\\RANDOM.txt"); long prevIoUsBSposition = fp.BaseStream.Position; //In this point BaseStream.Position is 0,as expected n = 0; while (!fp.EndOfStream) { //After !fp.EndOfStream were executed,BaseStream.Position is changed to 19,//so I have to reset it to a prevIoUs position :S fp.BaseStream.Seek(prevIoUsBSposition,SeekOrigin.Begin); Console.WriteLine("Position of " + Convert.tochar(fp.Read()) + " is " + fp.BaseStream.Position); n = n + 5; fp.discardBufferedData(); fp.BaseStream.Seek(n,SeekOrigin.Begin); prevIoUsBSposition = fp.BaseStream.Position; } }
我的问题是,为什么在行之后(!fp.EndOfStream)将BaseStream.Position更改为19,例如BaseStream的结尾.当我调用EndOfStream检查时,我预计,显然是错误的,BaseStream.Position将保持不变?
谢谢.
解决方法
因此,EndOfStream必须从基本流中读取至少一个字节.而且,由于逐字节读取效率低下,因此读取的内容更多.这就是为什么调用EndOfStream将位置更改为结尾的原因(对于较大的文件,它不会是文件的结尾).
看来你实际上并不需要使用StreamReader,所以你应该直接使用Stream(或者特别是FileStream):
using (Stream fp = new FileStream(@"d:\RANDOM.txt",FileMode.Open)) { int n = 0; while (true) { int read = fp.ReadByte(); if (read == -1) break; char c = (char)read; Console.WriteLine("Position of {0} is {1}.",c,fp.Position); n += 5; fp.Position = n; } }
(我不确定在这种情况下设置位置超出文件末尾的位置,您可能需要为此添加一个检查.)
c#FileStream读取StreamReader EndOfStream存在问题
我们有file.txt看起来像这样:
aaaabb ccccddd eeeefffffff
有许多方法可以逐行阅读本文,其中一种方法是:
StreamReader sr = new StreamReader("file.txt"); while(!sr.EndOfStream) { string s = sr.ReadLine(); } sr.Close();
作品.获得每一行.
现在我需要前4个字母作为字节,其余的作为字符串.在查看事物并尝试一点后,我发现最简单的方法是:
FileStream fs = new FileStream("file.txt",FileMode.Open); StreamReader sr = new StreamReader(fs); byte[] arr = new byte[4]; fs.Read(arr,4); string s = sr.ReadLine(); sr.Close(); fs.Close();
作品. arr包含前4个字母作为字节,其余部分保存在s中.这只是一行.如果我们添加while:
FileStream fs = new FileStream("file.txt",FileMode.Open); StreamReader sr = new StreamReader(fs); while(!sr.EndOfStream) { byte[] arr = new byte[4]; fs.Read(arr,4); string s = sr.ReadLine(); } sr.Close(); fs.Close();
现在有一个问题.现在arr没有得到任何东西,并且s读取整行,包括前4个字母.更奇怪的是,如果我使用while(true)(并且我假设其他任何不是示例)而不是按预期工作,则4个字符作为字节,其余为字符串,这对于每一行都是相同的.
问题是我错过了什么?为什么会这样?我该如何解决这个问题?或者这可能是一个错误?
解决方法
以下是对正在发生的事情的逐步细分:
> fs打开文件并位于位置0.
> sr包装fs并且对EndOfStream的调用最终消耗(在这种情况下)27个字节到其内部缓冲区.此时,fs Position现在位于EOF.
>您尝试直接读取fs,但它在EOF处没有更多字节.
> sr.ReadLine从步骤#2中构建的缓冲区中读取,一切正常.
要修复特定的错误情况,可以将字节数组更改为char数组,然后使用sr.Read.即
char[] arr = new char[4]; sr.Read(arr,4);
我们今天的关于Stream冬季大促销:半价GTA5轻松收入囊中和gta5steam打折2021的分享就到这里,谢谢您的阅读,如果想了解更多关于.NET FileStream文件流,StreamReader文本流,MemoryStream内存流几种流的实例、c – 如何将istringstream和ifstream分配给istream变量?、c# – 为什么StreamReader.EndOfStream属性更改BaseStream.Position值、c#FileStream读取StreamReader EndOfStream存在问题的相关信息,可以在本站进行搜索。
本文标签: