Чтение и запись текстового файла в typescript

Как мне читать и писать текстовый файл из typescript в node.js? Я не уверен, что чтение/запись файла будет изолирована в node.js, если нет, я считаю, что должен быть способ доступа к файловой системе.

Ответ 1

  полагаю, что должен быть способ доступа к файловой системе.

Включите 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

Ответ 2

Сначала вам нужно будет установить определения узла для Typescript. Вы можете найти файл определений здесь:

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

Получив файл, просто добавьте ссылку на файл .ts следующим образом:

/// <reference path="path/to/node.d.ts" />

Затем вы можете кодировать свой класс машинописи для чтения/записи, используя модуль Node File System. Ваш класс машинописи 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();

Как только вы перенесете свой файл .ts в javascript (посмотрите здесь, если вы не знаете, как это сделать), вы можете запустить свой файл javascript с помощью узла и позволить магии работать:

> node myClass.js

Ответ 3

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

import { readFileSync } from 'fs';

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

Это сработало для меня. Вам может понадобиться заключить вторую команду в любую функцию, или вам может потребоваться объявить внутри класса без ключевого слова const.