标签: stream

如何将StreamReader和StreamWriter部署在同一个内存流上?

 class StreamReaderWriterDemo : AbastractDemo
{
    public override void Run()
    {
        string message = "hello this is a test 0000";

        string result = string.Empty;

        try
        {
            using (var memoryStream = new MemoryStream())
            {
                StreamWriter streamWriter = new StreamWriter(memoryStream, Encoding.Default);
                this.WriteToStream(streamWriter, memoryStream, message);
                memoryStream.Position = 0;

                StreamReader streamReader = new StreamReader(memoryStream, Encoding.Default);

                result = this.ReadFromStream(streamReader, memoryStream);


                streamWriter.Dispose();
                streamReader.Dispose();
            }
        }
        catch (Exception ex)
        {

        }

        Console.WriteLine(result);          
    }


    private void WriteToStream(StreamWriter streamWriter, MemoryStream stream, string message)
    {
            streamWriter.Write(message);
            streamWriter.Flush();
            streamWriter.Close();
    }

    private string …
Run Code Online (Sandbox Code Playgroud)

c# stream

1
推荐指数
1
解决办法
2602
查看次数

如何使用命名管道发送多个对象?

我正在尝试使用命名管道从服务器向客户端发送 4 个参数 - 一个整数、一个布尔值和两个字符串。我尝试过不同的方法,但仍然没有成功。第一种方法 - 我只是将所有参数转换为字符串并尝试像这样发送,但在客户端上我收到的所有参数均为空:

服务器代码:

   static void StartServer()
        {
            var server = new NamedPipeServerStream("PipesEnroll", PipeDirection.InOut);

                while (true)
                {
                    server.WaitForConnection();
                    StreamWriter writer = new StreamWriter(server);
                    string terminalTemplate;
                    string matcherTemplate;
                    int mathVersionNumber = 9;
                    int numberFingers;
                    bool isOk = Enroll.EnrollWithoutWCF(retrievedList, mathVersionNumber, out terminalTemplate, out matcherTemplate, out numberFingers);

                    writer.WriteLine(isOk.ToString());
                    writer.WriteLine(terminalTemplate);
                    writer.WriteLine(matcherTemplate);
                    writer.WriteLine(numberFingers.ToString());
                    writer.Flush();

                    server.Disconnect();
           }
Run Code Online (Sandbox Code Playgroud)

客户端代码:

                   using (var client = new NamedPipeClientStream(".", "PipesEnroll", PipeDirection.InOut))
                    {
                        client.Connect();
                        StreamReader reader = new StreamReader(client);

                          bool isOK = Convert.ToBoolean(reader.ReadLine());
                          string terminalTemplate = reader.ReadLine();
                          string …
Run Code Online (Sandbox Code Playgroud)

c# serialization stream named-pipes deserialization

1
推荐指数
1
解决办法
7223
查看次数

NetworkStream 读取的字节数比预期少

如果 messageBytes.Length 足够大(例如大约 30,000),则 Stream.Read 读取的字节数比预期少。

Using stream As New Net.Sockets.NetworkStream(socket)
    networkStream.Read(messageBytes, 0, messageBytes.Length)
End Using
Run Code Online (Sandbox Code Playgroud)

MSDN 的文档在其备注部分声明了这一点

即使尚未到达流的末尾,实现也可以自由地返回比请求更少的字节。

我能够在 while 循环中读取它,读取单个字节,直到到达所需的位置,例如

Dim position = 0
While position < messageBytes.Length
    stream.Read(messageBytes, position, 1)
    position += 1
End While
Run Code Online (Sandbox Code Playgroud)

问题是任何人都可以说出为什么实施允许这样做吗?我认为该Stream.Read方法是阻塞的,因此它应该等到流中的所有字节都可用并成功读取。

.net vb.net networkstream stream

1
推荐指数
1
解决办法
589
查看次数

对于小于 64 MB 的大小,CloudBlockBlob 的 UploadFromStream 函数是否具有原子性?

我正在从 BlockBlob 读取文件。文件大小保证小于 64 MB。因此它是单块操作。读取文件后,我更改了其中的某些部分,并通过 CloudBlockBlob 的 UploadFromStream 函数重新上传。我的问题是“对于小于 64 MB 的大小,CloudBlockBlob 的 UploadFromStream 函数是否是原子的?”。在写入过程中发生异常后,是否有可能在天蓝色存储上有损坏的文件?

注意:我对 AppendBlobs 提出了类似的问题,并得到了它是原子的答案。

atomic stream azure azure-blob-storage

1
推荐指数
1
解决办法
586
查看次数

NodeJS - 使用 Promise 对文件流进行哈希处理

我现在有一个统计和哈希(可能很大)文件的流程。现在我正在这样做:

function gen_hash (fn, callback) {
  var hash = crypto.createHash('sha256');

  var fh = fs.createReadStream(fn);
  fh.on('data', d => hash.update(d));
  fh.on('end', () => {
    var digest = hash.digest('hex');
  });
}

function gen_stat (fn, callback) {
  fs.stat(fn, function (err, stats) {
    if (err) {
      if (err.code == "ENOENT") {
        file.exists = false;
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

然后我有一些代码允许在它们都完成时进行回调。正如你可以想象的那样,它相当……复杂。

我认为这与 Promise 非常匹配,但我不知道如何使用它们。

我尝试了一些类似的东西:

const Promises = require('bluebird');
const fs = Promises.promisifyAll(require('fs'));

fh = fs.createReadStream(fn)
.then...
.error...
Run Code Online (Sandbox Code Playgroud)

但我实际上不明白这里要做什么,而且蓝鸟网站似乎缺乏细节。

我觉得类似的东西Promise.all可能是正确的,但我只是没有看到任何正确语法的好例子。

我知道我可以编写一个包装函数,在各种条件下返回一个承诺,但我不太明白它在承诺领域是如何工作的。也许是这样的?

const fs = Promise.promisifyAll(require('fs')); …
Run Code Online (Sandbox Code Playgroud)

file stream node.js promise es6-promise

1
推荐指数
1
解决办法
2818
查看次数

RxJava:将 Rx Flowable 拆分为多个流

我想对流执行一些操作,然后将流分成两个流,然后分别处理它们。

显示问题的示例:

Flowable<SuccessfulObject> stream = Flowable.fromArray(
        new SuccessfulObject(true, 0),
        new SuccessfulObject(false, 1),
        new SuccessfulObject(true, 2));

stream = stream.doOnEach(System.out::println);

Flowable<SuccessfulObject> successful = stream.filter(SuccessfulObject::isSuccess);
Flowable<SuccessfulObject> failed = stream.filter(SuccessfulObject::isFail);

successful.doOnEach(successfulObject -> {/*handle success*/}).subscribe();
failed.doOnEach(successfulObject -> {/*handle fail*/}).subscribe();
Run Code Online (Sandbox Code Playgroud)

班级:

class SuccessfulObject {
    private boolean success;
    private int id;

    public SuccessfulObject(boolean success, int id) {
        this.success = success;
        this.id = id;
    }

    public boolean isSuccess() {
        return success;
    }
    public boolean isFail() {
        return !success;
    }

    public void setSuccess(boolean success) {
        this.success = success;
    } …
Run Code Online (Sandbox Code Playgroud)

java stream rx-java

1
推荐指数
1
解决办法
1859
查看次数

如何管理 Kafka 组的过期

我试图通过删除消费者配置并让我的脚本稍后重新创建它来重置消费者配置,但我遇到了关于新消费者不可删除的错误。

kafka@kafka-0:~$ ./bin/kafka-consumer-groups.sh --bootstrap kafka-0:9092 --delete --group etl
Option '[delete]' is only valid with '[zookeeper]'. Note that there's no need to delete group metadata for the new consumer as the group is deleted when the last committed offset for that group expires.
Run Code Online (Sandbox Code Playgroud)

现在我想知道,控制此错误消息过期的消费者配置选项的名称是什么?

stream offset apache-kafka

1
推荐指数
1
解决办法
4488
查看次数

如何将对象写入流?

我正在尝试将一个对象写入流:

const fs = require('fs');

const stream = fs.createWriteStream('index.json', {objectMode: true});
stream.write({"a":1});

stream.end();
Run Code Online (Sandbox Code Playgroud)

根据文档,我可以通过传递选项来做到这一点{objectMode: true},但我收到错误:

events.js:182
      throw er; // Unhandled 'error' event
      ^

Error: Invalid data
    at WriteStream._write (fs.js:2116:31)
    at doWrite (_stream_writable.js:385:12)
    at writeOrBuffer (_stream_writable.js:371:5)
    at WriteStream.Writable.write (_stream_writable.js:288:11)
    at Object.<anonymous> (/Users/rostik404/projects/test-project/test-stream.js:8:8)
    at Module._compile (module.js:573:30)
    at Object.Module._extensions..js (module.js:584:10)
    at Module.load (module.js:507:32)
    at tryModuleLoad (module.js:470:12)
    at Function.Module._load (module.js:462:3)
Run Code Online (Sandbox Code Playgroud)

节点版本是8.4.0

stream node.js

1
推荐指数
1
解决办法
4927
查看次数

JAVA 8 可选地图否则

您好,我已经编写了语句,如果参数存在并且其值为falseOptional<Parameter>,我将返回true

public boolean getNoDailyAllowance(String code) {
    Optional<Parameter> myParam = parameterDao.getCachedParameter(code);
    return myParam.isPresent() && !myParam.get().currentValueBoolean();
}
Run Code Online (Sandbox Code Playgroud)

我想重写它像这样

return calcDailyAllowanceParam.map(parameter -> Boolean.parseBoolean(parameter.getCurrentValue())).orElse(false); 
Run Code Online (Sandbox Code Playgroud)

但我无法添加parameter.getCurrentValue()在我做错事之前操作员。

java dictionary stream option-type

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

如何将 cin 传递给函数?

我正在学习 C++ 中的不同流状态标志/函数,例如 good()、goodbit、bad()、badbit 等。在使用 std::cin 进行测试时,我无法将 cin 作为参数传递给函数(编译器显示很多错误)

#include <iostream>
#include <sstream>

 void print_state (const std::istream& stream) {
    std::cout << " good()=" << stream.good();
    std::cout << " eof()=" << stream.eof();
    std::cout << " fail()=" << stream.fail();
    std::cout << " bad()=" << stream.bad();
} 

int main() {
    std::cin.clear (std::ios::goodbit);
    std::cout << "goodbit: " << print_state(std::cin) << std::endl;

    std::cin.clear (std::ios::eofbit);
    std::cout << "eofbit: " << print_state(std::cin) << std::endl;

    std::cin.clear (std::ios::failbit);
    std::cout << "failbit: " << print_state(std::cin) << std::endl;

    std::cin.clear (std::ios::badbit);
    std::cout …
Run Code Online (Sandbox Code Playgroud)

c++ arguments stream cin

1
推荐指数
1
解决办法
8782
查看次数