c#里文件流filestream里的close到底有什么用

释放内存这个我懂还有什么其他的作用,如果不加上一个close也是能运行的,会对系统造成什么影响呀,还一个问题就是console.read(),console.readli... 释放内存这个我懂还有什么其他的作用,如果不加上一个close也是能运行的,会对系统造成什么影响呀,还一个问题就是console.read(),console.readline()和console.readkey()这几个有什么区别,回答的满意就给100分
在问下如果是c#程序中的io流没有关闭,运行以后,把c#程序关闭,那么内存是不是会把你刚刚没关闭的io占用的内存给释放掉呢
展开
 我来答
毓闻瑶4x
推荐于2018-02-28 · TA获得超过153个赞
知道小有建树答主
回答量:119
采纳率:0%
帮助的人:119万
展开全部
close的作用就是关闭文件流。
如果你开启了文件流在读取一个文件却没有close,那么这个文件一直被你的程序在占用。别人就无法再操作这个文件。(当然,读还是可以的,只是无法写这个文件)
比如,你有两个程序,同时读取一个文件,并且不close,那么无论哪个程序都无法修改或删除这个文件。
我看了你的追问,关闭程序就可以不占用内存。是的,关闭程序就把内存给释放了,可问题是,你这个程序是短暂的寿命吗?你开发程序出来是给别人用的吧,那么这个程序就会一直开启状态,你不能随便去关闭它。比如,一个网站,那是一直开启放在互联网上的。一个游戏,一直开启给玩家玩的。你可以经常去把这个程序关闭吗?无论是网站还是游戏,都会有很多用户访问你的程序,如果不做到释放内存,100个用户就要占用100个文件流,1000个用户占用1000个,你的程序和服务器能够支撑不住那么多信息的。所以要做到及时释放内存,保证程序能够正常运行。
以上是我对close的作用的解释与内存释放的一点理解,我看其他答案都没有说道点子上,才跳出来吱个声。至于console.read()等,我就不做多解释了,楼上的各位都已经帮你做出回答。
freeeeeewind
推荐于2016-04-29 · TA获得超过1万个赞
知道大有可为答主
回答量:3227
采纳率:94%
帮助的人:1354万
展开全部

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);
        }
    }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
TitanTao
2011-09-27 · TA获得超过651个赞
知道小有建树答主
回答量:207
采纳率:100%
帮助的人:225万
展开全部
filestream 文件流的close有连个用处。
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.ReadKey(); 就不会有这种情况,我也是刚刚编写代码时候遇到了这样问题,感觉有点奇怪所有问了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
畅想未来1号
2011-09-27 · TA获得超过655个赞
知道小有建树答主
回答量:318
采纳率:0%
帮助的人:115万
展开全部
不关闭的话,会占用内存,如果大量资源被占用的话,就会产生反应慢,卡机,甚至死机的状况。
追问
我如果关掉了这个程序呢,那就不存在占用内存了吧
追答
那也不释放你占用的资源,只有释放它才行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式