node.js - Đọc và ghi tệp văn bản trong typescript
Tôi nên đọc và ghi một tập tin văn bản từ TypeScript trong Node.js như thế nào? Tôi không chắc việc đọc/ghi tập tin có bị sandbox trong Node.js hay không, nếu không, tôi tin rằng sẽ có cách để truy cập hệ thống tập tin.
Câu trả lời #1
tin rằng nên có một cách để truy cập hệ thống tệp.
Bao gồm node.d.ts bằng cách sử dụng npm i @types/node. Sau đó tạo một tệp tsconfig.json mới (npx tsc --init) và tạo một tệp .ts như sau:
import * as fs from 'fs';
fs.readFileSync('foo.txt','utf8');
Bạn cũng có thể sử dụng các hàm khác trong fs : https://nodejs.org/api/fs.html
Thêm
Khởi đầu nhanh với Node: https://basarat.gitbook.io/typescript/nodejs
Câu trả lời #2
import { readFileSync } from 'fs';
const file = readFileSync('./filename.txt', 'utf-8');
Điều này đã hiệu quả với tôi. Bạn có thể cần phải bao lệnh thứ hai trong một hàm nào đó hoặc bạn có thể cần khai báo nó trong một lớp mà không dùng từ khóa const.
Câu trả lời #3
Đầu tiên bạn sẽ cần cài đặt các định nghĩa node cho Typescript. Bạn có thể tìm tệp định nghĩa tại đây:
https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/node/node.d.ts
Khi bạn đã có file, chỉ cần thêm tham chiếu vào file .ts của bạn như sau:
/// <reference path="path/to/node.d.ts" />Sau đó bạn có thể viết mã lớp TypeScript của mình để đọc/ghi, sử dụng mô-đun Hệ thống Tệp Node. Lớp TypeScript của bạn myClass.ts có thể trông như sau:
/// <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();
Khi bạn biên dịch tệp .ts của mình sang JavaScript (xem tại đây nếu bạn không biết cách làm), bạn có thể chạy tệp JavaScript của mình bằng node và để phép màu diễn ra:
> node myClass.js
Câu trả lời #4
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);
})
BIÊN TẬP :
xem xét cấu trúc dự án:
../readfile/
├── filename.txt
└── src
├── index.js
└── index.ts
xem xét 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));
nếu bạn có trong thư mục readfile và chạy tsc src/index.ts && node src/index.js, kết quả sẽ là:
./
filename.txt
src
/home/andrei/scripts/readfile/src/
index.js
index.ts
tức là, nó phụ thuộc vào nơi bạn chạy nút.
__dirname là tên thư mục của module hiện tại.
