c#里文件流filestream里的close到底有什么用
释放内存这个我懂还有什么其他的作用,如果不加上一个close也是能运行的,会对系统造成什么影响呀,还一个问题就是console.read(),console.readli...
释放内存这个我懂还有什么其他的作用,如果不加上一个close也是能运行的,会对系统造成什么影响呀,还一个问题就是console.read(),console.readline()和console.readkey()这几个有什么区别,回答的满意就给100分
在问下如果是c#程序中的io流没有关闭,运行以后,把c#程序关闭,那么内存是不是会把你刚刚没关闭的io占用的内存给释放掉呢 展开
在问下如果是c#程序中的io流没有关闭,运行以后,把c#程序关闭,那么内存是不是会把你刚刚没关闭的io占用的内存给释放掉呢 展开
7个回答
展开全部
close的作用就是关闭文件流。
如果你开启了文件流在读取一个文件却没有close,那么这个文件一直被你的程序在占用。别人就无法再操作这个文件。(当然,读还是可以的,只是无法写这个文件)
比如,你有两个程序,同时读取一个文件,并且不close,那么无论哪个程序都无法修改或删除这个文件。
我看了你的追问,关闭程序就可以不占用内存。是的,关闭程序就把内存给释放了,可问题是,你这个程序是短暂的寿命吗?你开发程序出来是给别人用的吧,那么这个程序就会一直开启状态,你不能随便去关闭它。比如,一个网站,那是一直开启放在互联网上的。一个游戏,一直开启给玩家玩的。你可以经常去把这个程序关闭吗?无论是网站还是游戏,都会有很多用户访问你的程序,如果不做到释放内存,100个用户就要占用100个文件流,1000个用户占用1000个,你的程序和服务器能够支撑不住那么多信息的。所以要做到及时释放内存,保证程序能够正常运行。
以上是我对close的作用的解释与内存释放的一点理解,我看其他答案都没有说道点子上,才跳出来吱个声。至于console.read()等,我就不做多解释了,楼上的各位都已经帮你做出回答。
如果你开启了文件流在读取一个文件却没有close,那么这个文件一直被你的程序在占用。别人就无法再操作这个文件。(当然,读还是可以的,只是无法写这个文件)
比如,你有两个程序,同时读取一个文件,并且不close,那么无论哪个程序都无法修改或删除这个文件。
我看了你的追问,关闭程序就可以不占用内存。是的,关闭程序就把内存给释放了,可问题是,你这个程序是短暂的寿命吗?你开发程序出来是给别人用的吧,那么这个程序就会一直开启状态,你不能随便去关闭它。比如,一个网站,那是一直开启放在互联网上的。一个游戏,一直开启给玩家玩的。你可以经常去把这个程序关闭吗?无论是网站还是游戏,都会有很多用户访问你的程序,如果不做到释放内存,100个用户就要占用100个文件流,1000个用户占用1000个,你的程序和服务器能够支撑不住那么多信息的。所以要做到及时释放内存,保证程序能够正常运行。
以上是我对close的作用的解释与内存释放的一点理解,我看其他答案都没有说道点子上,才跳出来吱个声。至于console.read()等,我就不做多解释了,楼上的各位都已经帮你做出回答。
展开全部
FileStream.Close方法关闭当前文件流并释放与之关联的所有资源(如文件磁盘缓冲区)。
注意:创建文件流后,无论是读取还是写入操作,最后必须用Close方法关闭文件流!这样做的目的一方面是释放文件操作所占用的系统资源,另一方面避免文件有出现无法预料的结果。
【例1】写文件操作后关闭文件流
using System.Text;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// 打开文件流准备写入操作
FileStream fs = new FileStream("d:\\data.txt",
FileMode.Create,
FileAccess.Write);
string text = "输入文本文件的信息:你好,世界!";
byte[] b = Encoding.Default.GetBytes(text);
fs.Write(b, 0, b.Length);
// 使得所有缓冲的数据都写入到文件中
fs.Flush();
// 方法关闭当前文件流
fs.Close();
}
}
}
【例2】读文件操作后关闭文件流
using System;
using System.Text;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// 打开文件流准备读取操作
FileStream fs = new FileStream("d:\\data.txt",
FileMode.Open,
FileAccess.Read);
// 文件读入缓冲区
byte[] buf = new byte[1024];
// 读取文件
int byteNum = fs.Read(buf, 0, buf.Length);
// 关闭文件流!
fs.Close();
// 显示读取的内容
string text = Encoding.Default.GetString(buf, 0, byteNum);
Console.WriteLine(text);
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
filestream 文件流的close有连个用处。
1、关闭流释放托管内存,使垃圾回收器可以释放对应的内存块。
2、在执行close方法后数据才可以真正的写入磁盘文件。
console 控制台程序使用的输入输入流类。
read() readline() readkey() 都是输入类
read()和readline()的区别是readline()读完后换行
readkey()读取键盘按下了什么键
1、关闭流释放托管内存,使垃圾回收器可以释放对应的内存块。
2、在执行close方法后数据才可以真正的写入磁盘文件。
console 控制台程序使用的输入输入流类。
read() readline() readkey() 都是输入类
read()和readline()的区别是readline()读完后换行
readkey()读取键盘按下了什么键
更多追问追答
追问
比如说我在主函数代码里加了Console.Read()以后执行玩了一个操作返回主函数的,就会卡主不让再次输入了,就是输入也没有函数反应,Console.ReadKey(); 就不会有这种情况,我也是刚刚编写代码时候遇到了这样问题,感觉有点奇怪所有问了
追答
贴个代码看看吧!具体的只能看代码了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-09-27
展开全部
调用close是主动释放对象资源,以便系统资源更有效的利用,C#本身也是有资源回收机制的,所有即便不使用close也可以正常运行,只不过用完filestream立即close释放的更及时。
关于区别,简单来说就是:
Console.Read(); 会等待键盘输入信息直到用户按下回车,不换行
Console.ReadLine(); 会等待键盘输入信息直到用户按下回车,一次读入一行
Console.ReadKey(); 则是等待用户按下任意键,一次读入一个字符
希望对你理解有帮助,如果想理解的更详细点,建议在代码中多试试。
关于区别,简单来说就是:
Console.Read(); 会等待键盘输入信息直到用户按下回车,不换行
Console.ReadLine(); 会等待键盘输入信息直到用户按下回车,一次读入一行
Console.ReadKey(); 则是等待用户按下任意键,一次读入一个字符
希望对你理解有帮助,如果想理解的更详细点,建议在代码中多试试。
追问
比如说我在主函数代码里加了Console.Read()以后执行玩了一个操作返回主函数的,就会卡主不让再次输入了,就是输入也没有函数反应,Console.ReadKey(); 就不会有这种情况,我也是刚刚编写代码时候遇到了这样问题,感觉有点奇怪所有问了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不关闭的话,会占用内存,如果大量资源被占用的话,就会产生反应慢,卡机,甚至死机的状况。
追问
我如果关掉了这个程序呢,那就不存在占用内存了吧
追答
那也不释放你占用的资源,只有释放它才行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询