标签: stream

从本地文件或URL打开IO流

我知道其他语言中的库可以采用包含本地文件路径或URL的字符串,并将其作为可读IO流打开.

在ruby中有一个简单的方法吗?

ruby stream

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

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

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

java oop serialization object stream

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

使用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()))
                { …
Run Code Online (Sandbox Code Playgroud)

.net audio mp3 stream naudio

96
推荐指数
3
解决办法
14万
查看次数

将字节数组保存到文件中

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

我怎么做?

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

c# byte file stream save

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

"不支持给定路径的格式."

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

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

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

不支持给定路径的格式.

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

断点给了我str_uploadpathas 的价值C:\\webprojects\\webservices\\UploadBucket\\Raw\\.

这个字符串有什么问题?

.net c# upload webforms stream

95
推荐指数
5
解决办法
26万
查看次数

如何清除ostringstream

    ostringstream s;

    s << "123";
    cout << s.str().c_str() << endl;

    // how to clear ostringstream here?
    s << "456";
    cout << s.str().c_str() << endl;

输出是:

123
123456

我需要:

123
456

如何重置ostringstream以获得所需的输出?

c++ stream

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

ifstream打开失败时如何获取错误消息

ifstream f;
f.open(fileName);

if ( f.fail() )
{
    // I need error message here, like "File not found" etc. -
    // the reason of the failure
}
Run Code Online (Sandbox Code Playgroud)

如何将错误消息作为字符串?

c++ error-handling std stream

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

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);
Run Code Online (Sandbox Code Playgroud)

这两种方法有什么区别?

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

java file stream filereader bufferedreader

90
推荐指数
4
解决办法
8万
查看次数

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

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

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

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

[Reader].ReadToEnd()
Run Code Online (Sandbox Code Playgroud)

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

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

一些假设:

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

现在提问:

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

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

.net c# stream streamreader large-files

89
推荐指数
9
解决办法
18万
查看次数

带输入/输出流的Java进程

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

为什么这样或者我做错了什么?我的最终目标是创建一个线程调度任务来定期执行的命令/ bash的,因此OutputStream,并InputStream会在协同工作并没有停止工作.我也遇到过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 ()) != …
Run Code Online (Sandbox Code Playgroud)

java stream

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