所以我用fs.readFile()给了我
"致命错误:CALL_AND_RETRY_LAST分配失败 - 处理内存不足"
因为fs.readFile()在调用回调之前将整个文件加载到内存中,我应该使用fs.createReadStream()吗?
这就是我以前用readFile做的事情:
fs.readFile('myfile.json', function (err1, data) {
if (err1) {
console.error(err1);
} else {
var myData = JSON.parse(data);
//Do some operation on myData here
}
}
Run Code Online (Sandbox Code Playgroud)
对不起,我对流媒体不熟悉; 以下是使用流媒体做同样事情的正确方法吗?
var readStream = fs.createReadStream('myfile.json');
readStream.on('end', function () {
readStream.close();
var myData = JSON.parse(readStream);
//Do some operation on myData here
});
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在开发一个用电子构建的应用程序,它应该与wavesurfer.js一起显示表示音频文件的波形.但是,我无法使用fs模块打开文件,并通过Blob将文件内容推送到waveurfer.文件加载,一切似乎都有效,但解码waveurfer说Error decoding audiobuffer.
我想的两件事可能会影响到这一点:
fs.readFile函数将编码作为第二个参数type属性定义mimetype但是,到目前为止,这两种方法都无法解决问题.
我希望有人有解决方案.(也可能是fs.readFile功能完全是错误的方式,有一个更好的方式;我只是寻找一个相对高效的方式打开文件,任何帮助表示赞赏)干杯!
这是代码......
(我要省略所有的电子样板,你可以通过这样做轻松搞定git clone https://github.com/sindresorhus/electron-boilerplate/) - 在脚本中加入一个脚本标签,main.js在html中的某个地方index.html添加一个div,wave-area并将一个脚本标签添加到wavesurfer.js库中.您还需要演示wav文件的本地副本.
然后在main.js文件中......
var fs = require('fs');
var wavesurfer = Object.create(WaveSurfer);
wavesurfer.init({
container: '#wave-area'
});
fs.readFile('/path/to/demo.wav', function(err, data) {
if (data && !err) {
console.log('has data and no error!');
}
var file = new window.Blob([data]);
wavesurfer.loadBlob(file);
}
wavesurfer.on('loading', function(e) {
console.log('loading', e);
});
wavesurfer.on('error', …Run Code Online (Sandbox Code Playgroud) 我试图在PHP中为整个文件执行字符串替换.我的文件超过100MB所以我必须逐行,不能使用file_get_contents().有一个很好的解决方案吗?
我可以在readfile()中使用外部URL吗?
header('Content-type: application/pdf');
header('Content-Transfer-Encoding: binary');
header('Content-Disposition: inline; filename="'.$file.'" ');
//header('Content-Length: ' . filesize("http:...z/pub/".$file.'.pdf'));
@readfile("http://...z/pub/".$file.'.pdf');
Run Code Online (Sandbox Code Playgroud) 我根本找不到如何从外部存储器获取一个指定的文件.我知道使用getExternalStoragePublicDirectory(),您将获得外部存储目录,但我无法进一步了解.我需要某种方法,你必须给出文件的名称,然后返回文件.感谢名单
我正在ifstream::read用来读文件,
ifstream ifs("a.txt");
char buf[1024];
ifs.read(buf, 1024);
Run Code Online (Sandbox Code Playgroud)
但是a.txt的大小可能小于1000 bytes,所以我怎么知道从中读取了多少字节ifs?
''当遇到空值时,如何将以下向量拆分为包含每个新元素的列表?
例如给定以下输入 -
x <- c("abc", "", "a", "b", "c", "", "ab", "ac", "", "a", "a", "a",
"a", "", "b")
x
[1] "abc" "" "a" "b" "c" "" "ab" "ac" "" "a" "a" "a" "a" "" "b"
Run Code Online (Sandbox Code Playgroud)
我想要以下列表作为输出
list("abc", c("a", "b", "c"), c("ab", "ac"), c("a", "a", "a",
"a"), "b")
[[1]]
[1] "abc"
[[2]]
[1] "a" "b" "c"
[[3]]
[1] "ab" "ac"
[[4]]
[1] "a" "a" "a" "a"
[[5]]
[1] "b"
Run Code Online (Sandbox Code Playgroud) 我讨厌google无法搜索符号.我在一些示例代码中看到了这一点,并想知道为什么在readfile函数之前有@符号:
@readfile($filename);
Run Code Online (Sandbox Code Playgroud)
没有@符号意味着什么不同?
如果ReadFile使用大小为32 MB的内容调用一次,则显然比读取具有较小块大小的等效字节数(如32 KB)要长.
为什么?
(不,我的磁盘不忙.)
忘了提 - 我正在这样做FILE_FLAG_NO_BUFFERING!
奇怪的...
我再也无法访问我的旧机器了(PATA),但是当我在那里测试时,它花了大约2倍的时间,有时更多.在我的新机器(SATA)上,我只有25%的差异.
这是一段要测试的代码:
#include <memory.h>
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
int main()
{
HANDLE hFile = CreateFile(_T("\\\\.\\C:"), GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
OPEN_EXISTING, FILE_FLAG_NO_BUFFERING /*(redundant)*/, NULL);
__try
{
const size_t chunkSize = 64 * 1024;
const size_t bufferSize = 32 * 1024 * 1024;
void *pBuffer = malloc(bufferSize);
DWORD start = GetTickCount();
ULONGLONG totalRead = 0;
OVERLAPPED overlapped = { 0 };
DWORD nr = …Run Code Online (Sandbox Code Playgroud)