标签: stream

我应该为流对象调用Close()或Dispose()吗?

类如Stream,StreamReader,StreamWriter等工具IDisposable界面.这意味着,我们可以Dispose()在这些类的对象上调用方法.他们还定义了一个public名为的方法Close().现在让我感到困惑的是,一旦我完成了对象,我该怎么称呼?如果我同时打电话怎么办?

我目前的代码是这样的:

using (Stream responseStream = response.GetResponseStream())
{
   using (StreamReader reader = new StreamReader(responseStream))
   {
      using (StreamWriter writer = new StreamWriter(filename))
      {
         int chunkSize = 1024;
         while (!reader.EndOfStream)
         {
            char[] buffer = new char[chunkSize];
            int count = reader.Read(buffer, 0, chunkSize);
            if (count != 0)
            {
               writer.Write(buffer, 0, count);
            }
         }
         writer.Close();
      }
      reader.Close();
   }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我编写了using()构造,自动调用Dispose()每个对象的方法.但我也称之为Close()方法.这样对吗?

请告诉我使用流对象时的最佳做法.:-)

MSDN示例不使用using()构造,并且调用 …

c# idisposable stream streamwriter streamreader

139
推荐指数
6
解决办法
12万
查看次数

如何在社交网络中实现活动流

我正在开发自己的社交网络,我还没有在网上找到用户操作流的实现示例...例如,如何过滤每个用户的操作?如何存储动作事件?我可以将哪种数据模型和对象模型用于操作流和自己的操作?

architecture design-patterns stream social-networking

136
推荐指数
4
解决办法
5万
查看次数

Java:如何确定流的正确charset编码

参考以下线程: Java App:无法正确读取iso-8859-1编码文件

以编程方式确定输入流/文件的正确字符集编码的最佳方法是什么?

我尝试过使用以下内容:

File in =  new File(args[0]);
InputStreamReader r = new InputStreamReader(new FileInputStream(in));
System.out.println(r.getEncoding());
Run Code Online (Sandbox Code Playgroud)

但是在我知道用ISO8859_1编码的文件中,上面的代码产生了ASCII,这是不正确的,并且不允许我正确地将文件的内容呈现回控制台.

java encoding file stream character-encoding

135
推荐指数
10
解决办法
29万
查看次数

将字符串写入输出流

我有几个正在实现OutputStream的输出侦听器.它可以是写入stdout或文件的PrintStream,也可以是写入内存或任何其他输出目的地; 因此,我将OutputStream指定为方法中的(a)参数.

现在,我收到了String.在这里写入流的最佳方式是什么?

我应该只使用Writer.write(message.getBytes())吗?我可以给它字节,但如果目标流是字符流,那么它会自动转换吗?

我需要在这里使用一些桥流吗?

java stream

131
推荐指数
6
解决办法
32万
查看次数

我可以将python中的stdout重定向到某种字符串缓冲区吗?

我正在使用python ftplib来编写一个小的FTP客户端,但是包中的一些函数不返回字符串输出,而是打印到stdout.我想重定向stdout到一个对象,我将能够从中读取输出.

我知道stdout可以重定向到任何常规文件:

stdout = open("file", "a")
Run Code Online (Sandbox Code Playgroud)

但我更喜欢不使用本地驱动器的方法.

我正在寻找类似于BufferedReaderJava的东西,可用于将缓冲区包装到流中.

python redirect stdout stream

127
推荐指数
7
解决办法
11万
查看次数

如何从String创建InputStream?

我不习惯在Java中使用流 - 我如何创建InputStream一个String

java string stream

117
推荐指数
2
解决办法
11万
查看次数

如何在txt文件中添加新行

我想在我的date.txt文件中添加带有文本的新行,但不是将其添加到现有的date.txt中,而是应用程序正在创建新的date.txt文件.

TextWriter tw = new StreamWriter("date.txt");

// write a line of text to the file
tw.WriteLine(DateTime.Now);

// close the stream
tw.Close();
Run Code Online (Sandbox Code Playgroud)

我想打开txt文件,添加一些文本,关闭它,然后点击一下后:打开date.txt,添加文本,然后再次关闭它.

所以我可以得到:

按下按钮:打开txt - >添加当前时间,然后关闭它.按下另一个按钮,txt打开 - >在同一行中添加文本"OK"或"NOT OK",然后再次关闭它.

所以我的txt文件看起来像这样:

2011-11-24 10:00:00 OK
2011-11-25 11:00:00 NOT OK
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?谢谢!

c# stream text-files winforms

116
推荐指数
3
解决办法
30万
查看次数

什么是流?

编程世界中的流是什么?我们为什么需要它?

如果可能的话,请在类比的帮助下解释.

terminology stream

114
推荐指数
6
解决办法
5万
查看次数

C#使用流

溪流对我来说有点神秘.我不知道何时使用哪个流以及如何使用它们.有人可以向我解释如何使用流吗?

如果我理解正确,有三种流类型:

  • stream
  • read stream
  • write stream

它是否正确?并且,例如,a Memorystream和a 之间的区别是FileStream什么?

c# stream

107
推荐指数
5
解决办法
10万
查看次数

有没有办法在不关闭BaseStream的情况下关闭StreamWriter?

我的根本问题是,当using调用Disposea时StreamWriter,它也会处理BaseStream(同样的问题Close).

我有一个解决方法,但正如你所看到的,它涉及复制流.有没有办法这样做而不复制流?

这样做的目的是将字符串(最初从数据库中读取)的内容获取到流中,因此可以由第三方组件读取该流.
注意:我无法更改第三方组件.

public System.IO.Stream CreateStream(string value)
{
    var baseStream = new System.IO.MemoryStream();
    var baseCopy = new System.IO.MemoryStream();
    using (var writer = new System.IO.StreamWriter(baseStream, System.Text.Encoding.UTF8))
    {
        writer.Write(value);
        writer.Flush();
        baseStream.WriteTo(baseCopy); 
    }
    baseCopy.Seek(0, System.IO.SeekOrigin.Begin);
    return baseCopy;
}
Run Code Online (Sandbox Code Playgroud)

用作

public void Noddy()
{
    System.IO.Stream myStream = CreateStream("The contents of this string are unimportant");
    My3rdPartyComponent.ReadFromStream(myStream);
}
Run Code Online (Sandbox Code Playgroud)

理想情况下,我正在寻找一个名为的假想方法BreakAssociationWithBaseStream,例如

public System.IO.Stream CreateStream_Alternate(string value)
{
    var baseStream = new System.IO.MemoryStream();
    using (var writer …
Run Code Online (Sandbox Code Playgroud)

c# dispose stream

107
推荐指数
4
解决办法
4万
查看次数