在typescript中读写文本文件

时间:2015-11-11 02:06:45

标签: node.js typescript

我应该如何从node.js中的typescript读取和写入文本文件? 我不确定会在node.js中读取/写入一个沙箱文件,如果没有,我相信应该有一种方法来访问文件系统。

5 个答案:

答案 0 :(得分:22)

  

相信应该有一种方法来访问文件系统。

使用node.d.ts加入npm i @types/node。然后创建一个新的tsconfig.json文件(npx tsc --init)并创建一个.ts文件,如下所示:

import fs from 'fs';
fs.readFileSync('foo.txt','utf8');

您也可以使用fs中的其他功能:https://nodejs.org/api/fs.html

更多

节点快速入门:https://basarat.gitbooks.io/typescript/content/docs/node/nodejs.html

答案 1 :(得分:5)

首先,您需要为Typescript安装节点定义。您可以在此处找到定义文件:

https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/node/node.d.ts

获得文件后,只需添加对bundle check --path=vendor/bundle || bundle install --path=vendor/bundle --jobs=4 --retry=3 bash: line 1: bundle: command not found bash: line 1: bundle: command not found bundle check --path=vendor/bundle || bundle install --path=vendor/bundle --jobs=4 --retry=3 returned exit code 127 Action failed: bundle install 文件的引用,如下所示:

.ts

然后,您可以使用节点文件系统模块对读取/写入的typescript类进行编码。您的打字稿类/// <reference path="path/to/node.d.ts" />可能如下所示:

myClass.ts

一旦您将/// <reference path="path/to/node.d.ts" /> class MyClass { // Here we import the File System module of node private fs = require('fs'); constructor() { } createFile() { this.fs.writeFile('file.txt', 'I am cool!', function(err) { if (err) { return console.error(err); } console.log("File created!"); }); } showFile() { this.fs.readFile('file.txt', function (err, data) { if (err) { return console.error(err); } console.log("Asynchronous read: " + data.toString()); }); } } // Usage // var obj = new MyClass(); // obj.createFile(); // obj.showFile(); 文件转换为javascript(check out here,如果您不知道如何操作),您可以使用节点运行您的javascript文件并让魔法工作:

.ts

答案 2 :(得分:3)

import { readFileSync } from 'fs';

const file = readFileSync('./filename.txt', 'utf-8');

这对我有用。 您可能需要将第二个命令包装在任何函数中,或者可能需要在没有关键字const的类中进行声明。

答案 3 :(得分:1)

import * as fs from 'fs';
import * as path from 'path';

fs.readFile(path.join(__dirname, "filename.txt"), (err, data) => {
    if (err) throw err;
    console.log(data);
})

编辑:

考虑项目结构:

../readfile/
├── filename.txt
└── src
    ├── index.js
    └── index.ts

考虑index.ts

import * as fs from 'fs';
import * as path from 'path';

function lookFilesInDirectory(path_directory) {
    fs.stat(path_directory, (err, stat) => {
        if (!err) {
            if (stat.isDirectory()) {
                console.log(path_directory)
                fs.readdirSync(path_directory).forEach(file => {
                    console.log(`\t${file}`);
                });
                console.log();
            }
        }
    });
}

let path_view = './';
lookFilesInDirectory(path_view);
lookFilesInDirectory(path.join(__dirname, path_view));

如果您位于readfile文件夹中并运行tsc src/index.ts && node src/index.js,则输出为:

./
        filename.txt
        src

/home/andrei/scripts/readfile/src/
        index.js
        index.ts

也就是说,这取决于您在哪里运行节点。

__dirname是当前模块的目录名称。

答案 4 :(得分:0)

澄清一下:如果出现 TS 2307:找不到模块导入错误:检查 tsconfig.json 文件。

它必须包含 node_modules

{
.....
  "include": [
    "src/**/*.ts",
    "src/**/*.tsx",
    "src/**/*.vue",
    "tests/**/*.ts",
    "tests/**/*.tsx",
    "node_modules"
  ],
.....
}