Как мне читать и писать текстовый файл из typescript в node.js? Я не уверен, что чтение/запись файла будет изолирована в node.js, если нет, я считаю, что должен быть способ доступа к файловой системе.
Чтение и запись текстового файла в typescript
Ответ 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
.