标签: stream

如何将可序列化对象保存/恢复到文件?

我有一个对象列表,我需要将其保存在我的计算机中.我已经阅读了一些论坛,我知道该对象必须是Serializable.但如果我能得到一个例子,那就太好了.例如,如果我有以下内容:

[Serializable]
public class SomeClass
{
     public string someProperty { get; set; }
}

SomeClass object1 = new SomeClass { someProperty = "someString" };
Run Code Online (Sandbox Code Playgroud)

但是,如何object1在我的计算机中存储某个地方以后再检索?

c# serialization stream

88
推荐指数
5
解决办法
19万
查看次数

如何将Reader转换为InputStream,将Writer转换为OutputStream?

是否有一种简单的方法可以避免处理文本编码问题?

java stream

87
推荐指数
8
解决办法
15万
查看次数

如何在PowerShell中逐行处理文件作为流

我正在使用一些多GB的文本文件,并希望使用PowerShell对它们进行一些流处理.这很简单,只需解析每一行并提取一些数据,然后将其存储在数据库中.

不幸的是,get-content | %{ whatever($_) }似乎在管道的这个阶段保持整个行集在内存中.它的速度也非常慢,需要花费很长时间才能完全阅读.

所以我的问题是两部分:

  1. 如何让它逐行处理流,而不是将整个事物缓存在内存中?我想避免为此目的使用几次RAM.
  2. 如何让它运行得更快?对a get-content进行迭代的PowerShell 似乎比C#脚本慢100倍.

我希望我在这里做一些愚蠢的事情,比如错过一个-LineBufferSize参数或什么......

powershell stream

87
推荐指数
3
解决办法
26万
查看次数

从OutputStream创建InputStream的最有效方法

此页面:http://blog.ostermiller.org/convert-java-outputstream-inputstream 描述了如何从OutputStream创建InputStream:

new ByteArrayInputStream(out.toByteArray())
Run Code Online (Sandbox Code Playgroud)

其他替代方案是使用PipedStreams和新线程,这很麻烦.

我不喜欢将许多兆字节复制到内存字节数组中的新内容.有没有一个库可以更有效地完成这项工作?

编辑:

根据Laurence Gonsalves的建议,我尝试了PipedStreams,事实证明它们并不难以应对.这是clojure中的示例代码:

(defn #^PipedInputStream create-pdf-stream [pdf-info]
  (let [in-stream (new PipedInputStream)
        out-stream (PipedOutputStream. in-stream)]
    (.start (Thread. #(;Here you write into out-stream)))
    in-stream))
Run Code Online (Sandbox Code Playgroud)

java io inputstream stream bytearrayoutputstream

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

将node.js流写入字符串变量

我正在攻击node.js程序,该程序捕获SMTP邮件并对邮件数据进行操作.'smtp-protocol'节点库以流形式提供邮件数据,作为node.js新手,我不知道如何将该流写入字符串变量.我目前使用该行写入stdout:

__PRE__

正如我所说,我需要将此流数据写入字符串变量,然后在流结束后我将使用它.

非常感谢!

javascript stream node.js

79
推荐指数
12
解决办法
9万
查看次数

如何关闭可读流(结束前)?

如何关闭Node.js中的可读流

var input = fs.createReadStream('lines.txt');

input.on('data', function(data) {
   // after closing the stream, this will not
   // be called again

   if (gotFirstLine) {
      // close this stream and continue the
      // instructions from this if
      console.log("Closed.");
   }
});
Run Code Online (Sandbox Code Playgroud)

这将比以下更好:

input.on('data', function(data) {
   if (isEnded) { return; }

   if (gotFirstLine) {
      isEnded = true;
      console.log("Closed.");
   }
});
Run Code Online (Sandbox Code Playgroud)

但这不会阻止阅读过程......

stream fs node.js

79
推荐指数
6
解决办法
7万
查看次数

使用file_get_contents的HTTP请求,获取响应代码

我正在尝试file_get_contentsstream_context_createPOST 一起使用.我的代码到目前为止:

    $options = array('http' => array(
        'method'  => 'POST',
        'content' => $data,
        'header'  => 
            "Content-Type: text/plain\r\n" .
            "Content-Length: " . strlen($data) . "\r\n"
    ));
    $context  = stream_context_create($options);
    $response = file_get_contents($url, false, $context);
Run Code Online (Sandbox Code Playgroud)

它工作正常,但是,当发生HTTP错误时,它会发出警告:

file_get_contents(...): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request
Run Code Online (Sandbox Code Playgroud)

并返回false.有办法:

  • 抑制警告(我打算在失败的情况下抛出自己的异常)
  • 从流中获取错误信息(至少是响应代码)

php http file stream

76
推荐指数
3
解决办法
7万
查看次数

在Swift中逐行读取文件/ URL

我正在尝试读取一个给定的文件NSURL并将其加载到一个数组中,其中的项目由换行符分隔\n.

这是我到目前为止的方式:

var possList: NSString? = NSString.stringWithContentsOfURL(filePath.URL) as? NSString
if var list = possList {
    list = list.componentsSeparatedByString("\n") as NSString[]
    return list
}
else {
    //return empty list
}
Run Code Online (Sandbox Code Playgroud)

出于几个原因,我对此并不满意.一,我正在处理从几千字节到几百MB的文件.你可以想象,使用这么大的字符串是缓慢而笨拙的.其次,这会在执行时冻结UI - 再次,不好.

我已经考虑在一个单独的线程中运行此代码,但我一直遇到麻烦,此外,它仍然无法解决处理大字符串的问题.

我想做的是下面的伪代码:

var aStreamReader = new StreamReader(from_file_or_url)
while aStreamReader.hasNextLine == true {
    currentline = aStreamReader.nextLine()
    list.addItem(currentline)
}
Run Code Online (Sandbox Code Playgroud)

我如何在Swift中实现这一目标?

关于我正在阅读的文件的一些注意事项:所有文件都由短或(\n或255个字符)字符串组成,由或者分隔\r\n.文件的长度范围从~100行到超过5000万行.它们可能包含欧洲字符和/或带重音的字符.

macos file input stream swift

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

如何将整个流读入std :: string?

我正在尝试将整个流(多行)读成字符串.

我正在使用这个代码,它有效,但它冒犯了我的风格......当然有一种更简单的方法吗?也许使用stringstreams?

void Obj::loadFromStream(std::istream & stream)
{ 
  std::string s;

  std::streampos p = stream.tellg();  // remember where we are

  stream.seekg(0, std::ios_base::end); // go to the end
  std::streamoff sz = stream.tellg() - p;  // work out the size
  stream.seekg(p);        // restore the position

  s.resize(sz);          // resize the string
  stream.read(&s[0], sz);  // and finally, read in the data.
Run Code Online (Sandbox Code Playgroud)


实际上,const对字符串的引用也可以,这可能会使事情变得更容易......

const std::string &s(... a miracle occurs here...)
Run Code Online (Sandbox Code Playgroud)

c++ string stream

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

std :: flush如何工作?

有人可以解释(最好用简单的英语)如何std::flush工作?

  • 它是什么?
  • 你什么时候冲洗一条小溪?
  • 它为什么如此重要?

谢谢.

c++ stream

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