我正在尝试检查目录是否作为node.js中命令行应用程序的一部分存在.但是,fs似乎并不理解~/.例如,以下内容返回false ...
> fs.existsSync('~/Documents')
false
Run Code Online (Sandbox Code Playgroud)
......但这会返回真实的......
> fs.existsSync('/Users/gtmtg/Documents')
true
Run Code Online (Sandbox Code Playgroud)
......即使他们都是一回事.
为什么会发生这种情况,是否有解决方法?提前致谢!
我尝试在Mac OS中使用Nodejs fs.read方法。但是它不起作用..我在下面的源代码中使用
var fs = require('fs');
fs.open('helloworld.txt', 'r', function(err, fd) {
fs.fstat(fd, function(err, stats) {
var bufferSize=stats.size ,
chunkSize=512,
buffer=new Buffer(bufferSize),
bytesRead = 0;
while (bytesRead < bufferSize) {
if ((bytesRead + chunkSize) > bufferSize) {
chunkSize = (bufferSize - bytesRead);
}
fs.read(fd, buffer, bytesRead, chunkSize, bytesRead, testCallback);
bytesRead += chunkSize;
}
console.log(buffer.toString('utf8'));
});
fs.close(fd);
});
var testCallback = function(err, bytesRead, buffer){
console.log('err : ' + err);
};
Run Code Online (Sandbox Code Playgroud)
实际上,我在stackoverflow中使用了一些示例。
当我执行源代码时,
err : Error: EBADF, read
Run Code Online (Sandbox Code Playgroud)
此错误返回。
但是,如果我使用readFile方法,则效果很好。
fs.readFile('helloworld.txt', function …Run Code Online (Sandbox Code Playgroud) 如何在不递归地遍历目录中所有子级的情况下获取node.js中目录的大小?
例如
var fs = require('fs');
fs.statSync('path/to/dir');
Run Code Online (Sandbox Code Playgroud)
会把这样的东西还给我,
{ dev: 16777220,
mode: 16877,
nlink: 6,
uid: 501,
gid: 20,
rdev: 0,
blksize: 4096,
ino: 62403939,
size: 204,
blocks: 0,
atime: Mon May 25 2015 20:54:53 GMT-0400 (EDT),
mtime: Mon May 25 2015 20:09:41 GMT-0400 (EDT),
ctime: Mon May 25 2015 20:09:41 GMT-0400 (EDT) }
Run Code Online (Sandbox Code Playgroud)
但是size属性不是目录的大小,而是目录的大小(即目录中文件的总和)。
如果不递归地找到子目录的大小(然后将其总和),是否没有办法获取目录的大小(包含目录中文件的大小)?
我基本上是想做等效的操作,du -ksh my-directory但是如果给定目录的确很大(例如/),则需要递归地获取真正的目录大小。
有谁知道如何在node.js/javascript中获取模块的名称
所以我们说你这样做
var RandomModule = require ("fs")
.
.
.
console.log (RandomModule.name)
// -> "fs"
Run Code Online (Sandbox Code Playgroud) 关于fs / io操作,NodeJs很棒,但是我不能用来访问共享的(用于存储)本地网络驱动器。
filesystem.writeFile('\\192.168.1.1\test.txt', 'data!', function(error){ ... });
Run Code Online (Sandbox Code Playgroud)
我收到UNKNOWN_ERROR,这无济于事!通过浏览器(我在Windows上)可以毫无问题地访问那里的IP,并且可以写(对于我的windnows用户)。
这里有什么问题 ?!
执行此代码后:
const filename = "../../.dburl"
const url = fs.readFileSync(filename, 'utf-8')
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Error: ENOENT: no such file or directory, open '../../.dburl'
Run Code Online (Sandbox Code Playgroud)
我到目前为止所知道的:
1)文件路径正确。
2)我的应用程序有权读取文件。
3)即使存储在与应用程序相同的目录中,也不会读取.dburl。
非常感谢任何帮助...谢谢!
在我的angular 2应用程序中,需要使用文件系统将大文件上传到Amazon S3服务器.但是,我在应用程序中导入文件系统时遇到问题.请帮助我的应用程序中实现文件系统.
我的component.ts文件
import { Component,ViewChild } from '@angular/core';
import * as fs from 'fs';
/* External Services */
import { ApiWebConfig } from '../../../core/config/app.config';
declare var $:any;
@Component({
selector: 'content-uploadpart',
templateUrl: './app/modules/uploadpartcontent.html'
})
export class ContentUploadPartComponent {
constructor( private config:ApiWebConfig ) { }
uploadToAWS(file:any) {
var buffer = fs.readFile()
console.log('buffer',buffer);
}
ngOnInit() { }
}
Run Code Online (Sandbox Code Playgroud)
还有我的uploadpartcontent.html
<div class="container">
<div class="row">
<div class="col-md-12 upload_part_wrap">
<input #fileUpload (change)="uploadToAWS($event)" type="file" value="Browse" />
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我的Package.json文件
{
"name": "my-project",
"version": "1.0.0", …Run Code Online (Sandbox Code Playgroud) 我正在Node中构建一个服务器,它将搜索文件夹以查看是否存在XML文件(glob),如果存在,则将(fs)中的文件作为JSON对象(xml2js)读取并最终将其存储在数据库中某处.我想要将解析器的结果输出到另一个变量中,以便我可以对数据执行其他操作.从我所知道的情况来看,有些东西是同步运行的,但是我无法弄清楚如何阻止它并让我等到它完成继续前进.
我将我的功能分离到app.js的其他控制器:
app.controller.js
const fs = require('fs-extra');
const glob = require('glob');
const xml2js = require('xml2js');
exports.requests = {};
exports.checkFileDrop = async () => {
console.log('Checking for xml in filedrop...');
// this is the only place await works...
await glob('./filedrop/ALLREQUESTS-*.xml', (err, files) => {
var parser = new xml2js.Parser();
// this is looking for a specific file now, which I'll address later once I can figure out this issue
fs.readFile('./filedrop/ALLREQUESTS-20170707.xml', 'utf16le', function (err, data) {
if (err) {
console.log('ERROR: ', err); …Run Code Online (Sandbox Code Playgroud) 我正在遍历目录中的文件并将文件详细信息存储到数组中data。如果我不尝试运行fs.stat以获取诸如文件创建/编辑日期之类的内容,则以下代码将填充数组:
fs.readdir('../src/templates', function (err, files) {
if (err) {
throw err;
}
var data = [];
files
.forEach(function (file) {
try {
fs.stat('../src/templates/'+file,(error,stats) => {
data.push({ Name : file,Path : path.join(query, file) });
});
} catch(e) {
console.log(e);
}
});
res.json(data);
});
});
Run Code Online (Sandbox Code Playgroud)
如果我将数组移到data.push(...)外面,fs.stat则返回文件数据。在fs.stat它里面返回空。我认为这是一个异步问题,因为for循环正在运行并在fs.stat运行前完成。
我想我需要在这里使用诺言,但不能确定。
运行节点应用程序以读取目录
fs.readdirSync('?/Users/edwardthompson/Dropbox/Apps/EvidentiaSoftware/records/thompson-hayward');
Run Code Online (Sandbox Code Playgroud)
我一直得到
Stack:
error properties: Object({ errno: -2, syscall: 'scandir', code: 'ENOENT', path: '?/Users/edwardthompson/Dropbox/Apps/EvidentiaSoftware/records/thompson-hayward' })
Error: ENOENT: no such file or directory, scandir '?/Users/edwardthompson/Dropbox/Apps/EvidentiaSoftware/records/thompson-hayward'
Run Code Online (Sandbox Code Playgroud)
但是我知道目录在那里
ls -al /Users/edwardthompson/Dropbox/Apps/EvidentiaSoftware/records/thompson-hayward
total 0
drwxr-xr-x@ 9 edwardthompson staff 288 Jan 18 2019 .
drwxr-xr-x@ 6 edwardthompson staff 192 Aug 29 12:30 ..
drwxr-xr-x@ 9 edwardthompson staff 288 Jan 18 2019 Births
drwxr-xr-x@ 4 edwardthompson staff 128 Jan 18 2019 Census
drwxr-xr-x@ 3 edwardthompson staff 96 Jan 18 2019 Deaths
drwxr-xr-x@ 7 edwardthompson staff …Run Code Online (Sandbox Code Playgroud) fs ×10
node.js ×9
javascript ×6
angular ×1
aws-sdk ×1
ecmascript-6 ×1
electron ×1
filestream ×1
filesystems ×1
fs-extra ×1
module ×1
npm ×1
xml2js ×1