Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >流不可读

流不可读
EN

Stack Overflow用户
提问于 2018-01-28 07:48:35
回答 1查看 6.3K关注 0票数 2

下面是读取ftp响应流并将数据写入两个不同文件(test1.html和test2.html)代码。第二个StreamReader抛出stream was not readable错误。响应流应该是可读的,因为它还没有超出作用域,而且不应该调用dispose。有人能解释一下原因吗?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
static void Main(string[] args)
    {
        // Make sure it is ftp
        if (Properties.Settings.Default.FtpEndpoint.Split(':')[0] != Uri.UriSchemeFtp) return;

        // Intitalize object to used to communicuate to the ftp server
        FtpWebRequest request = (FtpWebRequest)WebRequest.Create(Properties.Settings.Default.FtpEndpoint + "/test.html");

        // Credentials
        request.Credentials = new NetworkCredential(Properties.Settings.Default.FtpUser, Properties.Settings.Default.FtpPassword);

        // Set command method to download
        request.Method = WebRequestMethods.Ftp.DownloadFile;

        // Get response
        FtpWebResponse response = (FtpWebResponse)request.GetResponse();

        using (Stream output = File.OpenWrite(@"C:\Sandbox\vs_projects\FTP\FTP_Download\test1.html"))
        using (Stream responseStream = response.GetResponseStream())
        {
            responseStream.CopyTo(output);
            Console.WriteLine("Successfully wrote stream to test.html");

            try
            {
                using (StreamReader reader = new StreamReader(responseStream))
                {
                    string file = reader.ReadToEnd();
                    File.WriteAllText(@"C:\Sandbox\vs_projects\FTP\FTP_Download\test2.html", file);

                    Console.WriteLine("Successfully wrote stream to test2.html");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Exception: {ex}");
            }
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-28 07:51:21

您不能从流中读取两次。在此调用之后:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
responseStream.CopyTo(output);

..。您已经读取了流中的所有数据。没有什么可读的了,你不能“倒带”流(例如,查找到开头),因为它是一个网络流。诚然,我希望它是空的,而不是抛出错误,但细节并不重要,因为它不是一件有用的事情。

如果您想为同一数据制作两份副本,最好的选择是像您已经在做的那样将其复制到磁盘,然后读取您刚刚写入的文件。

(或者,您可以通过复制到MemoryStream将其读取到内存中,然后您可以倒带该流并重复读取它。但是,如果您已经打算将其保存到磁盘上,那么您不妨先这样做。)

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48484263

复制
相关文章
nodejs可读流源码分析
可读流是对数据消费的抽象,nodejs中可读流有两种工作模式:流式和暂停式,流式就是有数据的时候就会触发回调,并且把数据传给回调,暂停式就是需要用户自己手动执行读取的操作。我们通过源码去了解一下可读流实现的一些逻辑。因为实现的代码比较多,逻辑也比较绕,本文只分析一些主要的逻辑,有兴趣的可以参考文档或者自行深入看源码了解细节。我们先看一下ReadableState,这个对象是表示可读流的一些状态和属性的。
theanarkh
2020/07/22
8750
Node.js 流源码解读之可读流
1. 基本概念 1.1. 流的历史演变 流不是 Node.js 特有的概念。它们是几十年前在 Unix 操作系统中引入的,程序可以通过管道运算符(|)对流进行相互交互。 在基于 Unix 系统的 MacOS 以及 Linux 中都可以使用管道运算符(|),它可以将运算符左侧进程的输出转换成右侧的输入。 在 Node 中,我们使用传统的 readFile 去读取文件的话,会将文件从头到尾都读到内存中,当所有内容都被读取完毕之后才会对加载到内存中的文件内容进行统一处理。 这样做会有两个缺点: 内存方面:占用大量
用户1097444
2022/06/29
2.2K0
Node.js 流源码解读之可读流
Node.js--Stream 1. 概述2. Readable Stream(可读流)3. Writable Stream(可写流)4. 流模式(objectMode )5. 缓冲(highWa
  流(stream)在 Node.js 中是处理流数据的抽象接口(abstract interface)。 stream 模块提供了基础的 API 。使用这些 API 可以很容易地来构建实现流接口的对象。
菜的黑人牙膏
2019/01/21
1.5K0
如何提高代码的可读性? - 读《编写可读代码的艺术》
很多同行在编写代码的时候往往只关注一些宏观上的主题:架构,设计模式,数据结构等等,却忽视了一些更细节上的点:比如变量如何命名与使用,控制流的设计,以及注释的写法等等。以上这些细节上的东西非常影响代码的可读性。
用户2932962
2018/08/30
1.2K0
如何提高代码的可读性? - 读《编写可读代码的艺术》
可读代码编写炸鸡一
我一开始其实是想写设计模式,写了一定的积累。虽然我也想写比较高端的算法,数据结构,甚至 AI 的东西。但是很无奈,现在能力不足无法下笔。
syy
2020/04/07
3790
可读代码编写炸鸡三 - 审美
在上一篇 可读代码炸鸡二(下篇) - 命名的歧义 的结尾处,提到了接下来的炸鸡会围绕 多行代码,多个函数 的代码范围来讨论代码可读性的优化。
syy
2020/04/07
3970
SVG fallback 及可读性
| 导语 这里谈到的svg回退,不针对于动画的回退,针对于面对高清屏的日益普及项目中所利用svg矢量图形,所做的图片和图标的回退。目前类似的高清处理方案还有icon fonts,也有多倍图,经过项目中不断尝试和总结,svg目前可能是最符合我们预期的方案,无论是浏览器渲染后的效果,还是出于对设计师的工作成本的考虑,以及后期各个环节人员配合的效率来看,svg都有过人之处。(具体推演过程参看ISUX博文) 1. 为什么使用SVG 体积小,可压缩 与同类图片相比,在体积上有优势,同时作为一种XML文件,对gzip
腾讯ISUX
2018/06/29
7080
提高程序可读性
在编程过程中注意提高程序的可读性是良好的编程习惯,这使程序更易于理解,也更容易在以后进行修改和更正。同时也有助于我们理清自己的编程思路。
From Zero
2021/02/22
3850
增强分析可读性-Pandas教程
作者 | Pathairush Seeda 编译 | VK 来源 | Towards Data Science
磐创AI
2021/04/21
9770
增强分析可读性-Pandas教程
【TRTC小程序】跨房连麦功能实现(不混流实现)
推拉流可通过live-pusher/player自身标签赋值或者wx提供的方法进行控制,参考文档:
circleRich
2022/05/13
2.3K1
【TRTC小程序】跨房连麦功能实现(不混流实现)
OAuth 详解<5> 什么是OAuth 2.0 隐式流, 已经不推荐了吗?
您最近可能听说过一些关于 OAuth 2.0 隐式流程的讨论。OAuth 工作组发布了一些关于隐式流程和基于 JavaScript 的应用程序的新指南,特别指出不应再使用隐式流程。在本文中,我们将了解隐式流程发生了什么变化以及原因。
用户1418987
2023/10/16
3110
OAuth 详解<5> 什么是OAuth 2.0 隐式流, 已经不推荐了吗?
Windows常见可读写目录的探测
实战中如到某虚拟主机,磁盘权限设置较为严格,cmd.exe被降权执行不了命令,常见可读写目录也不能读,这时就需要用到探测可读写的脚本来查找可读写的目录和文件,用于上传cmd.exe和提权EXP等。
潇湘信安
2022/09/22
1.1K0
Windows常见可读写目录的探测
使用Block提高代码可读性
最近一直在思考并持续的扩充着自己的技术栈,比如每天坚持着学习前端知识,并且时常想着在移动端这条路上,自己的技术盲区。诚然,想要在一个领域达到一定的技术高度是挺困难的一件事情,操之过急万万不可,最主要的还是保持对技术的热情,慢慢沉淀。
Originalee
2018/08/30
4530
使用Block提高代码可读性
什么叫代码的可读性?为什么说Kotlin的可读性比Java好?
不久之前,我看了一篇文章,大意是Kotlin与Java之间的对比,像这种文章,我一般是直接忽略的,但是那天我还是打开了,然后就看到一个非常吃惊的结果。 里面有一段是关于Kotlin与Java之间可读性的对比的文章,作者的结论是:Kotlin并不比Java更具有可读性,所有认为Kotlin 比Java更具有可读性的结论都是“主观性”的。 并且作者举了一个在我看来,不知道该怎么来描述的例子: 这个作者的大意是,上面这段文章,你多读个两三遍,你也会很快的理解它的意思,所以“对于熟练的读者而言,外观很少会成
企鹅号小编
2018/01/10
1.2K0
什么叫代码的可读性?为什么说Kotlin的可读性比Java好?
可读代码编写炸鸡十 - 保持单纯
难以置信,我用了一个月的时间重新捡起了这个炸鸡。很惭愧,我很长的时间没有阅读相关的东西了。但是感谢当时的我留下了宝贵的思维导图,保留了我当时的思路。
syy
2020/08/04
3770
Python 提高元组的可读性
假设学生系统中数据为固定格式:(名字,年龄,性别,邮箱) ('jack','16','male','jack3001@gmail.com') ('eric','17','male','eric@qq.com') ('xander','16','female','lucy123@yahoo.com') 方案一: from enum import IntEnum NAME,AGE,SEX,EMAIL=range(4) s=('jim','16','male','jim8721@gmail.com') # pri
py3study
2020/01/07
4210
抛弃变量,编写更加可读的JavaScript代码
理解一段代码最大的阻碍是大量的变量。而变量可以引入状态,这又将成倍的增加复杂性。每一个变量都使得理解代码更加困难。
疯狂的技术宅
2019/03/27
5020
可读代码编写炸鸡九 - 抽取子问题
原本想专门写个第三层的简介,但篇幅过短,也不会多少人看,就在本篇炸鸡简略提一下,然后便进入第三层的第一篇炸鸡就好。
syy
2020/07/09
6150
可读代码编写炸鸡九 - 抽取子问题
可读代码编写炸鸡四(上篇) - 来写注释
一般你加入了一个项目组,领你进来的人通常会帮助你熟悉环境,而你可能记得最清楚的便是
syy
2020/04/13
5090
开发入门之Web 品质- 可读性
可读性是网站品质的重要方面,它直接影响用户的使用体验和网站的可维护性。因此,在设计和开发过程中应该注重提高网站的可读性。本文将介绍如何通过一些技术手段提高Web网站的可读性。
爱学iOS的小麦子
2023/10/16
1940

相似问题

可读流的读取方法不返回空

11

为什么fetch API不返回可读的流?

14

gridfs-流createReadStream不返回可读数据

15

可写流是否可以通过管道传输到可读流或可读流?

11

可读流不会暂停

116
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文