标签: stream

如果没有更多行,则InputStreamReader应该结束

我有一个InputStreamReader(与a结合BufferedReader).

我想循环阅读Stream的内容

while((line = MyStream.readLine()) != null) {
    s.o.p(line);
    String lastline; 
}
Run Code Online (Sandbox Code Playgroud)

但这会创建一个没有结束的循环,所以我的整个程序等待循环结束..然后等待...等待.

目前,我有一种方法可以说明应该读取多少行.这很好,但非常不灵活.

我此刻的方法

public void getStatus(int times) throws IOException {
    for (int i = 0; i < times; i++) {
        System.out.println(fromServer.readLine());
    }
Run Code Online (Sandbox Code Playgroud)

我希望这个方法读取所有行并将最后一行保存在不带"times"参数的字符串中.

java stream

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

C#反序列化通过TCP

我现在遇到了通过TCP反序列化对象的问题.

反序列化时,我得到以下SerializationException(下面的代码):

附加信息:二进制流'0'不包含有效的BinaryHeader.可能的原因是序列化和反序列化之间的无效流或对象版本更改.

序列化代码:

public static void SerializeRO(Stream stream, ReplicableObject ro) {
            MemoryStream serializedObjectStream = new MemoryStream();
            Formatter.Serialize(serializedObjectStream, ro);
            BinaryWriter bw = new BinaryWriter(stream);
            bw.Write(serializedObjectStream.Length);
            serializedObjectStream.WriteTo(stream);
            serializedObjectStream.Close();
            bw.Close();
        }
Run Code Online (Sandbox Code Playgroud)

反序列化代码:

public static List<ReplicableObject> ParseStreamForObjects(Stream stream) {
        List<ReplicableObject> result = new List<ReplicableObject>();
        while (true) {
            if (!(stream as NetworkStream).DataAvailable) break;
            BinaryReader br = new BinaryReader(stream);
            int length = br.ReadInt32();
            byte[] bytes = br.ReadBytes(length);
            MemoryStream ms = new MemoryStream(bytes);
            ms.Position = 0;
                            // ERROR OCCURS ON THE LINE BELOW
            result.Add((ReplicableObject) Formatter.Deserialize(ms));
            ms.Close(); …
Run Code Online (Sandbox Code Playgroud)

c# serialization tcp stream

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

在sed模式中指定" - "

我想在一行中找到一个' - '字符,但是这个字符用于指定一个范围.我可以得到一个包含' - '字符的sed模式示例吗?

此外,如果我可以使用包含除空格和制表符之外的所有字符的模式,则会更快.

regex unix linux sed stream

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

从内存流问题加载Xml

这是我的代码:

MemoryStream xmlStream = new MemoryStream();
XmlDocument xmlDoc = new XmlDocument();
XmlWriter xmlWriter = XmlWriter.Create(xmlStream);

//Add some elements and attributes.

xmlWriter.WriterEndDocument();
xmlWriter.Flush();
xmlWriter.Close();
Run Code Online (Sandbox Code Playgroud)

好的,现在我已经关闭了XmlWriter,有没有办法再次访问XmlStream?

如果我不关闭,那么当我想使用xmlDoc.Load(xmlStream)时,它会给出一个异常,说"Root Element is missing"

.net c# xml stream

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

在什么条件下NetworkStream不会一次读入所有数据?

在回调中,NetworkStream.BeginRead我似乎注意到始终读取所有字节。我看到许多教程检查BytesRead是否小于总字节,如果是,请再次读取,但是似乎从来没有。

if (bytesRead < totalBytes)即使一次发送大量数据(数千个字符),并且即使缓冲区大小设置为非常小的值(大约16个),该条件也永远不会触发。

我没有使用“老式方式”进行测试,因为我正在使用Task.Factory.FromAsync而不是调用NetworkStream.BeginRead并提供一个我称为EndRead的回调。也许Tasks自动包含了直到读取完所有数据才返回的功能?我不确定。

无论哪种方式,我仍然对何时不能一次读取所有数据感到好奇。甚至需要检查是否未读取所有数据,如果需要,则再次读取?我似乎无法获得有条件运行的条件。

谢谢。

c# android networkstream stream android-asynctask

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

是否有AccuRev命令列出所有流?

我想获得所有流的列表,包括快照.我在CLI参考中找不到任何内容.

accurev stream

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

允许stringstream和outstream作为参数

我正在尝试编写一个将信息写入流的函数.我需要能够传递一个字符串流或ostream.我尝试使用声明函数F(std::ios* out),但后来当我使用<<运算符写入它时,我得到了这个错误:error: no match for operator<<.我该如何宣布这个功能呢?

c++ stream

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

反向MemoryStream.ToArray()

我正在获取一个httpwebresponse流(一个flash文件),我想将它保存为二进制文件,然后访问该二进制文件并将其显示为flash.现在,我正在将响应流写入MemoryStream,然后在MemoryStream上调用ToArray().我得到一个方便的字节[].

我该如何扭转这个功能?如何从我生成的byte []中获取flash文件的流?

谢谢!

c# binary serialization memorystream stream

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

为什么:: feof()与:: _ eof(:: fileno())不同?

免责声明:不要::feof()用作你的循环条件. 例如,请参阅以下答案: 文件读取:二进制文件的feof()

但是,我有"真正的"代码,它演示了一个不能::feof()用作我的循环条件的问题,但是LOGICALLY,这是演示问题的最简单方法.

请考虑以下事项:我们一次迭代一个字符流:

FILE* my_file;
// ...open "my_file" for reading...

int c;
while(0 == ::feof(my_file))
{ // We are not at EOF
  c = ::getc(my_file);
  // ...process "c"
}
Run Code Online (Sandbox Code Playgroud)

上面的代码按预期工作: 文件一次处理一个char,然后EOF我们退出.

但是,以下是出乎意料的行为:

FILE* my_file;
// ...open "my_file" for reading...

int c;
while(0 == ::_eof(::fileno(my_file)))
{ // We are not at EOF
  c = ::getc(my_file);
  // ...process "c"
}
Run Code Online (Sandbox Code Playgroud)

我原以为他们会这样做. ::fileno()每次都正确返回(整数)文件描述符.但是,测试只::_eof(::fileno(my_file))运行一次,然后在第二次尝试时返回1(指示a EOF).

我不明白. …

c++ file-io stream filestream

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

使用ostream进行C++日志记录

我正在制作一个记录器.我想创建一个log()以流作为输入的函数.

例如:

log("hello"<<" "<<"world"<<10<<"\n");
Run Code Online (Sandbox Code Playgroud)

我也希望它是线程安全的.

我重新定义了<<运算符,所以我可以这样做:

log()<<"hello"<<"world"<<10<<"\n"
Run Code Online (Sandbox Code Playgroud)

但是这个操作不是线程安全的.

如何使其线程安全?

c++ stream

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