javascript

java

python

c#

android

node.js

reactjs

c++

php

html

jquery

css

git

.net

ios

ruby-on-rails

sql

c

string

ruby

C ++自定义流操纵器,可更改流中的下一项

在C ++中,要打印十六进制数字,请执行以下操作:

int num = 10;
std::cout << std::hex << num; // => 'a'

我知道我可以创建一个仅向流中添加内容的操纵器,如下所示:

std::ostream& windows_feed(std::ostream& out)
{
    out << "\r\n";
    return out;
}

std::cout << "Hello" << windows_feed; // => "Hello\r\n"

但是,如何创建一个类似于“ hex”的操纵器来修改要出现在流中的项目? 作为一个简单的示例,我将如何在此处创建plusone机械手?:

int num2 = 1;
std::cout << "1 + 1 = " << plusone << num2; // => "1 + 1 = 2"

// note that the value stored in num2 does not change, just its display above.
std::cout << num2; // => "1"
trans by 2019-11-18T21:33:04Z

java-如何将Process Builder的输出重定向到字符串?

我正在使用以下代码来启动流程构建器。我想知道如何将其输出重定向到字符串。

ProcessBuilder pb = new ProcessBuilder(System.getProperty("user.dir")+"/src/generate_list.sh", filename);
Process p = pb.start();

我尝试使用ByteArrayOutputStream,但似乎没有用。

trans by 2019-11-08T14:52:45Z

node.js-Node流中的结束事件和结束事件有什么区别

Node.js流同时触发endfinish事件。 两者有什么区别?

trans by 2019-11-06T01:31:54Z

如何从.NET流中获取MemoryStream?

我有以下构造函数方法,该方法从文件路径打开MemoryStream

MemoryStream _ms;

public MyClass(string filePath)
{
    byte[] docBytes = File.ReadAllBytes(filePath);
    _ms = new MemoryStream();
    _ms.Write(docBytes, 0, docBytes.Length);
}

我需要更改它以接受Stream而不是文件路径。 从Stream对象中获取MemoryStream的最简单/最有效的方法是什么?

trans by 2019-10-15T07:51:26Z

C#4.0-ASP.Net MVC-从HttpPostedFileBase读取文件而不使用s

我正在使用文件上载选项来上载文件。 我直接通过POST方法将这个文件从View发送到Controller,

    [HttpPost]
    public ActionResult Page2(FormCollection objCollection)
    {
        HttpPostedFileBase file = Request.Files[0];
    }

假设我正在上传一个记事本文件。 我如何读取此文件并将此文本附加到字符串生成器,而不保存该文件。

我知道在SaveAs之后该文件,我们可以读取此文件。 但是,如何不保存就从HttpPostedFileBase读取此文件?

trans by 2019-10-12T01:58:44Z

C#-流是什么意思? 有什么特点?

C ++和C#都使用这个词stream来命名许多类。

  • C ++:streamFileStreamMemoryStreamBufferedStreamostream_iteratoristream_iterator等。
  • C#:streamFileStreamMemoryStreamBufferedStream等。

因此,我很想知道stream是什么意思? 流的特点是什么? 我什么时候可以用这个术语来命名我的班级? 这仅限于文件I / O类吗?

有趣的是,据我所知,C在任何地方都不会使用该词。

trans by 2019-10-11T16:21:43Z

C#-HttpWebRequest和本机GZip压缩

当请求使用Gzip压缩的页面时,出现很多以下错误:

System.IO.InvalidDataException:   GZip页脚中的CRC与   从解压缩后计算出的CRC   数据

我正在使用本机GZipStream进行解压缩,并正在寻找解决方法。 考虑到这一点,是否有解决方法可以解决此问题或另一个GZip库(免费?),可以正确处理此问题?

我正在验证webResponse ContentEncoding为GZIP

更新5/11简化的代码段

//Caller
public void SOSampleGet(string url) 
{
    // Initialize the WebRequest.
    webRequest = (HttpWebRequest)WebRequest.Create(url);
    webRequest.Method = WebRequestMethods.Http.Get;
    webRequest.KeepAlive = true;
    webRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
    webRequest.Headers.Add("Accept-Encoding", "gzip,deflate");
    webRequest.Referer = WebUtil.GetDomain(url);

    HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();    

    using (Stream stream = GetStreamForResponse(webResponse, READTIMEOUT_CONST))
    {
        //use stream
    }
}

//Method
private static Stream GetStreamForResponse(HttpWebResponse webResponse, int readTimeOut)
{
    Stream stream;
    switch (webResponse.ContentEncoding.ToUpperInvariant())
    {
        case "GZIP":
            stream = new GZipStream(webResponse.GetResponseStream(), CompressionMode.Decompress);
            break;
        case "DEFLATE":
            stream = new DeflateStream(webResponse.GetResponseStream(), CompressionMode.Decompress);
            break;

        default:
            stream = webResponse.GetResponseStream();
            stream.ReadTimeout = readTimeOut;
            break;
        }    
    return stream;
}
trans by 2019-10-11T09:33:44Z

javascript-Node.js将相同的可读流插入多个(可写)目标

我需要连续运行两个命令,这些命令需要从同一流中读取数据。将流传输到另一个流之后,缓冲区将被清空,因此我无法再次从该流中读取数据,因此无法正常工作:

var spawn = require('child_process').spawn;
var fs = require('fs');
var request = require('request');

var inputStream = request('http://placehold.it/640x360');
var identify = spawn('identify',['-']);

inputStream.pipe(identify.stdin);

var chunks = [];
identify.stdout.on('data',function(chunk) {
  chunks.push(chunk);
});

identify.stdout.on('end',function() {
  var size = getSize(Buffer.concat(chunks)); //width
  var convert = spawn('convert',['-','-scale',size * 0.5,'png:-']);
  inputStream.pipe(convert.stdin);
  convert.stdout.pipe(fs.createWriteStream('half.png'));
});

function getSize(buffer){
  return parseInt(buffer.toString().split(' ')[2].split('x')[0]);
}

要求对此抱怨

Error: You cannot pipe after data has been emitted from the response.

将inputStream更改为fs.createWriteStream会产生同样的问题。我不想写入文件,而是以某种方式重用请求产生的流(或与此相关的任何其他流)。

一旦完成流式传输,是否可以重用可读流?完成上述示例的最佳方法是什么?

trans by 2019-10-02T20:08:33Z

如何将整个流读入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.


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

const std::string &s(... a miracle occurs here...)
trans by 2019-10-02T11:38:56Z

node.js-如何关闭可读流(结束之前)?

如何在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.");
   }
});

这会比以下更好:

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

   if (gotFirstLine) {
      isEnded = true;
      console.log("Closed.");
   }
});

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

trans by 2019-09-23T20:29:32Z

c# - 将字节数组保存到fi

这个问题在这里已有答案:

  • 可以将Byte []数组写入C#中的文件吗?                                     8个答案

我有一个字节数组(实际上是IEnumerable),我需要将它保存到包含此数据的新文件中。

我怎么做?

我找到了一些答案,告诉我如何从中创建一个MemoryStream,但仍然无法将其保存到一个全新的文件中。

trans by 2019-09-16T06:48:07Z

.net - 使用C#中的流读取大型文本文件

我有一个很好的任务,就是如何处理大型文件被加载到我们应用程序的脚本编辑器中(就像我们用于快速宏的内部产品的VBA一样)。 大多数文件大约300-400 KB,这是很好的加载。 但是当它们超过100 MB时,这个过程很难(正如你所期望的那样)。

发生的事情是将文件读取并推入RichTextBox然后导航 - 不要过于担心这部分。

编写初始代码的开发人员只是使用StreamReader并且正在执行

[Reader].ReadToEnd()

这可能需要很长时间才能完成。

我的任务是打破这段代码,将其以块的形式读入缓冲区并显示一个带有取消选项的进度条。

一些假设:

  • 大多数文件将是30-40 MB
  • 文件的内容是文本(不是二进制),有些是Unix格式,有些是DOS。
  • 一旦检索到内容,我们就可以找出使用的终结符。
  • 一旦加载了在richtextbox中渲染所需的时间,没有人会担心。 这只是文本的初始加载。

现在提问:

  • 我可以简单地使用StreamReader,然后检查Length属性(so ProgressMax)并为set缓冲区大小发出Read并在后台worker中的while循环WHILST中迭代,这样它就不会阻塞主UI线程? 然后在完成后将stringbuilder返回到主线程。
  • 内容将转到StringBuilder。 如果长度可用,我可以用流的大小初始化StringBuilder吗?

这些(在您的专业意见中)是好主意吗? 我过去曾经有一些问题从Streams读取内容,因为它总会错过最后几个字节或者其他东西,但如果是这样的话,我会问另一个问题。

trans by 2019-09-15T19:38:23Z

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

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

不幸的是,-LineBufferSize似乎在管道的这个阶段保持整个行集在内存中。 它的速度也非常慢,需要花费很长时间才能完全阅读。

所以我的问题是两部分:

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

我希望我在这里做一些愚蠢的事,比如错过-LineBufferSize参数或其他东西......

trans by 2019-09-12T07:58:20Z

file - java.io.PrintWriter和java.io.BufferedWriter之间的区别?

请查看下面的代码:

// A.class
File file = new File("blah.txt");
FileWriter fileWriter = new FileWriter(file);
PrintWriter printWriter = new PrintWriter(fileWriter);

// B.class
File file = new File("blah.txt");
FileWriter fileWriter = new FileWriter(file);
BufferedWriter bWriter = new BufferedWriter(fileWriter);

这两种方法有什么区别?

什么时候应该在BufferedWriter上使用PrintWriter?

trans by 2019-09-12T04:53:53Z

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

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

trans by 2019-09-11T13:22:58Z

带输入/输出流的Java进程

我在下面有以下代码示例。 因此你可以输入一个命令到bash shell,即OutputStream,并将结果回显。 但是,在第一次阅读之后。 其他输出流不起作用?

为什么这样或者我做错了什么? 我的最终目标是创建一个Threaded计划任务,定期执行命令/ bash,以便OutputStreamInputStream必须协同工作而不会停止工作。 我也遇到了错误java.io.IOException: Broken pipe的任何想法?

谢谢。

String line;
Scanner scan = new Scanner(System.in);

Process process = Runtime.getRuntime ().exec ("/bin/bash");
OutputStream stdin = process.getOutputStream ();
InputStream stderr = process.getErrorStream ();
InputStream stdout = process.getInputStream ();

BufferedReader reader = new BufferedReader (new InputStreamReader(stdout));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin));

String input = scan.nextLine();
input += "\n";
writer.write(input);
writer.flush();

input = scan.nextLine();
input += "\n";
writer.write(input);
writer.flush();

while ((line = reader.readLine ()) != null) {
System.out.println ("Stdout: " + line);
}

input = scan.nextLine();
input += "\n";
writer.write(input);
writer.close();

while ((line = reader.readLine ()) != null) {
System.out.println ("Stdout: " + line);
}
trans by 2019-09-04T09:57:23Z

c# - “不支持给定路径的格式。”

我的Web服务中有以下代码:

string str_uploadpath = Server.MapPath("/UploadBucket/Raw/");
FileStream objfilestream = new FileStream(str_uploadpath +
                fileName, FileMode.Create, FileAccess.ReadWrite);

有人可以帮助我从代码的第2行解决此错误消息的问题。

不支持给定路径的格式。

文件夹的权限设置为对每个人的完全访问权限,它是文件夹的实际路径。

断点给了我str_uploadpath的值C:\\webprojects\\webservices\\UploadBucket\\Raw\\

这个字符串有什么问题?

trans by 2019-09-04T02:45:21Z

.net - 使用C#播放流中的音频

C#中是否有一种方法可以直接从System.IO.Stream播放音频(例如MP3),例如从WebRequest返回而不将数据临时保存到磁盘?


与NAudio的解决方案

在NAudio 1.3的帮助下,可以:

  1. 将URL中的MP3文件加载到MemoryStream中
  2. 完全加载后,将MP3数据转换为波形数据
  3. 使用NAudio的WaveOut类播放波形数据

如果能够播放半载MP3文件本来不错,但由于NAudio库设计,这似乎是不可能的。

这是完成工作的功能:

    public static void PlayMp3FromUrl(string url)
    {
        using (Stream ms = new MemoryStream())
        {
            using (Stream stream = WebRequest.Create(url)
                .GetResponse().GetResponseStream())
            {
                byte[] buffer = new byte[32768];
                int read;
                while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
                {
                    ms.Write(buffer, 0, read);
                }
            }

            ms.Position = 0;
            using (WaveStream blockAlignedStream =
                new BlockAlignReductionStream(
                    WaveFormatConversionStream.CreatePcmStream(
                        new Mp3FileReader(ms))))
            {
                using (WaveOut waveOut = new WaveOut(WaveCallbackInfo.FunctionCallback()))
                {
                    waveOut.Init(blockAlignedStream);
                    waveOut.Play();                        
                    while (waveOut.PlaybackState == PlaybackState.Playing )                        
                    {
                        System.Threading.Thread.Sleep(100);
                    }
                }
            }
        }
    }
trans by 2019-08-18T07:56:17Z

术语 - 什么是流?

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

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

trans by 2019-08-06T17:56:53Z

oop - Java中序列化的目的是什么?

我已经阅读了很多关于序列化的文章以及它如何如此美妙和精彩,但没有一个论点足够令人信服。 我想知道是否有人能真正告诉我通过序列化一个类我们能真正实现的目标是什么?

trans by 2019-08-04T08:46:39Z

1 2 3 下一页 共3页