问题标签 [io]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
671280 浏览

java - 将 OutputStream 转换为字符串

将 java.io.OutputStream 的输出通过管道传输到 Java 中的 String 的最佳方法是什么?

说我有方法:

它将某些数据从对象写入给定的流。但是,我想尽可能轻松地将此输出转换为字符串。

我正在考虑编写这样的课程(未经测试):

但是有更好的方法吗?我只想做个测试!

0 投票
3 回答
608 浏览

c# - 如何以最少的锁定访问文件

在我的应用程序(c# 3.5)中,有各种进程非常频繁地访问单个 xml 文件(读取和写入)。访问该文件的代码被放置在一个被许多其他应用程序引用的程序集中。例如,Windows 服务可能会实例化 MyFileReaderWriter 类(位于前面提到的程序集中)并使用此类的读/写方法。

我正在寻找以最少锁定量读取和创建/附加文件的最佳/最快方法。缓存文件数据并定期刷新新内容不是一种选择,因为数据很关键。

我忘了提到我目前使用 XDocument(LInq2Xml 基础结构)来读取/写入文件的内容。

0 投票
4 回答
21409 浏览

java - 给定一个 Java InputStream,如何确定流中的当前偏移量?

我想要一个通用的、可重用的getPosition()方法,它会告诉我从流的起点读取的字节数。理想情况下,我希望它能够与所有 InputStreams 一起使用,这样当我从不同的来源获取它们时,我就不必包装它们中的每一个。

这样的野兽存在吗?如果没有,任何人都可以推荐现有的计数实现InputStream吗?

0 投票
8 回答
17357 浏览

linux - 如何在 GNU/Linux 中记录正在使用磁盘的进程或内核活动?

在特定的 Debian 服务器上,iostat(和类似服务器)报告了异常高的磁盘写入量(以字节为单位)。我无法确定哪个进程正在执行这些写入。

两个有趣的点:

  1. 尝试一次关闭一项系统服务,但无济于事。磁盘活动保持相当稳定并且出乎意料地高。

  2. 尽管进行了写入,但似乎并没有在磁盘上消耗更多的整体空间。

这两个都让我认为写作可能是内核正在做的事情,但我没有交换,所以我不清楚 Linux 可能会尝试写什么。

可以试试:

http://www.atcomputing.nl/Tools/atop/

但想避免修补我的内核。

关于如何追踪这一点的任何想法?

0 投票
4 回答
10964 浏览

java - 在 java 中,如何将 java.awt.image.BufferedImage 写入 8 位 png 文件?

我正在尝试从 java.awt.image.BufferedImage 中写出一个 png 文件。一切正常,但生成的 png 是 32 位文件。

有没有办法让 png 文件变成 8 位?图像是灰度的,但我确实需要透明度,因为这是叠加图像。我正在使用 java 6,并且我希望返回一个 OutputStream,以便我可以让调用类处理将文件写入磁盘/db。

这是代码的相关部分:

0 投票
5 回答
6249 浏览

java - java.net 与 java.nio

什么时候从 java.net 切换到 java.nio 更好?.net(不是微软实体)更容易理解和熟悉,而 nio 是可扩展的,并带有一些额外的漂亮功能。

具体来说,我需要针对这种情况做出选择:我们有一个控制中心管理多个远程站点的硬件(每个站点都有一台计算机管理多个硬件单元(收发器、TNC 和旋转器))。我的想法是在每台机器上编写一个服务器应用程序,作为从控制中心到无线电硬件的网关,每个单元都有一个插座。根据我的理解,NIO 是针对一台服务器,多台客户端,但我想的是一台客户端,多台服务器。

我想第三种选择是使用 MINA,但我不确定这是否会在一个简单的问题上投入过多。


每个远程服务器最多有 8 个连接,都来自同一个客户端(用于控制所有硬件和单独的 TX/RX 套接字)。但是,单个客户端将希望同时连接到多个服务器。与其将每个服务器放在不同的端口上,是否可以在客户端使用通道选择器,或者在客户端使用多线程 io 并以不同方式配置服务器是否更好?


实际上,由于远程机器仅用于与其他硬件交互,RMI 或 IDL/CORBA 会是更好的解决方案吗?真的,我只是希望能够从硬件发送命令和接收遥测数据,而不必编写一些应用层协议来做到这一点。

0 投票
1 回答
4959 浏览

c# - 复制文件时如何防止此 System.IO.IOException?

当我运行以下代码来测试复制目录时,我在调用 fileInfo.CopyTo 方法时收到 System.IO.IOException。错误消息是:“该进程无法访问文件 'C:\CopyDirectoryTest1\temp.txt',因为它正被另一个进程使用。”

似乎 file1 ("C:\CopyDirectoryTest1\temp.txt") 上有一个锁,它是在发生错误的几行上方创建的,但如果是这样,我不知道如何释放它。有任何想法吗?

0 投票
7 回答
4463 浏览

c++ - 何时为 I/O (C++) 构建自己的缓冲系统?

我必须处理非常大的文本文件(2 GB),必须逐行读取/写入它们。使用 ofstream 写入 2300 万行真的很慢,所以一开始,我尝试加快在内存缓冲区(例如 256 MB 或 512 MB)中写入大块行的过程,然后将缓冲区写入文件. 这不起作用,性能或多或少相同。我在读取文件时遇到了同样的问题。我知道 I/O 操作由 STL I/O 系统缓冲,这也取决于磁盘调度程序策略(由操作系统管理,在我的情况下是 Linux)。

关于如何提高性能的任何想法?

PS:我一直在考虑在程序处理数据时使用后台子进程(或线程)来读取/写入数据块,但我不知道(主要是在子进程的情况下)这是否值得。

0 投票
2 回答
335 浏览

java - 对于少量信息,java 文件 i/o 或 derby 哪个更快?

我正在用 java 编写一个小代理,它将与其他代理玩游戏。我想在程序运行之间保留少量状态(最多可能约为 1kb),以便我可以尝试根据过去的成功调整代理的性能。本质上,我会在每场比赛开始时读取少量数据并在结束时写入少量数据。似乎我有 2 个选项,文件 I/O 或 derby。两者都有速度优势吗?或者对于这么少量的数据真的不重要吗?

0 投票
5 回答
7615 浏览

java - 如何解压缩字节数组中的压缩数据?

我有一个类,它有一个接收对象作为参数的方法。此方法通过 RMI 调用。

MyFile 有一个名为“body”的属性,它是一个字节数组。

此属性保存由另一个应用程序解析的文件的 gzip 压缩数据。

在使用它执行进一步操作之前,我需要解压缩这个字节数组。

我看到的所有解压缩 gzip 数据的示例都假设我想将其写入磁盘并创建一个物理文件,但我没有这样做。

我该怎么做呢?

提前致谢。