Bạn có thể ghi vào một tệp trong javascript không?

Bài viết này sẽ hướng dẫn bạn cách ghi vào tệp từ JavaScript – cả từ trình duyệt web và Node. môi trường js. Với các ví dụ về cách ghi, nối thêm, cập nhật, xóa và đổi tên tệp

Mã JavaScript thường được chạy từ một trong hai môi trường – trong trình duyệt web khi xem trang web hoặc trong Nút. js cho phép JavaScript được thực thi bên ngoài trình duyệt web – thường được sử dụng để xây dựng các dịch vụ phụ trợ và ứng dụng web

Ghi vào tệp từ trình duyệt bằng JavaScript

Đầu tiên, làm thế nào để làm điều đó từ trình duyệt. JavaScript hiện đại bao gồm các công cụ tích hợp cho việc này. Các bước thực hiện như sau

  • Tạo tệp bằng đối tượng JavaScript Blob để biểu thị tệp
  • Tạo một URL cho đối tượng mới
  • Cung cấp một liên kết mà người dùng có thể nhấp vào để yêu cầu trình duyệt tải xuống đối tượng Blob từ URL dưới dạng tệp

Sau đó, người dùng có thể nhấp vào liên kết và họ sẽ thấy hộp thoại lưu tiêu chuẩn từ trình duyệt web của mình, cho phép họ lưu tệp đã tạo ở bất cứ đâu họ muốn

Đây là cách mã trông giống như một chức năng có thể sử dụng lại mà bạn có thể sao chép và dán để tự sử dụng

// A global variable should be defined to hold the URL for the file to be downloaded
// This is good practice as if many links are being generated or the link is being regularly updated, you don't want to be creating new variables every time, wasting memory
var textFileUrl = null;

// Function for generating a text file URL containing given text
function generateTextFileUrl(txt) {
    let fileData = new Blob([txt], {type: 'text/plain'});

    // If a file has been previously generated, revoke the existing URL
    if (textFileUrl !== null) {
        window.URL.revokeObjectURL(textFile);
    }

    textFileUrl = window.URL.createObjectURL(fileData);

    // Returns a reference to the global variable holding the URL
    // Again, this is better than generating and returning the URL itself from the function as it will eat memory if the file contents are large or regularly changing
    return textFileUrl;
};

// Generate the file download URL and assign it to the link
// Wait until the page has loaded! Otherwise the download link element will not exist
window.addEventListener("load", function(){
    document.getElementById('downloadLink').href = generateTextFileUrl('Hello world!');
});

Bạn sẽ cần liên kết sau trong HTML của mình để hiển thị nút tải xuống


Download

Giải pháp này không cố gắng mô phỏng việc nhấp vào các liên kết được tạo hoặc bất kỳ liên kết vô nghĩa nào. Các trình duyệt thường sẽ chặn nó và bạn không nên lén lút tải xuống qua người dùng mà không cần họ nhấp vào liên kết để tự lưu tệp

Ghi vào tệp từ nút. js

Nếu bạn đang làm việc trong một Node. js, tất cả các công cụ để quản lý tệp đều có sẵn trong thư viện fs tích hợp

Đọc hoặc ghi tệp cần có thời gian và có thể tạm dừng thực thi. Trước đây, tốt nhất là sử dụng lệnh gọi lại để thực hiện các thao tác với tệp sau khi tệp đã được đọc hoặc ghi thành công vào

Tuy nhiên, giờ đây, Promises cung cấp một cách tiếp cận được tiêu chuẩn hóa cho các tác vụ không đồng bộ. Vì vậy, những ví dụ này sẽ sử dụng Lời hứa thay vì gọi lại để giữ cho mọi thứ hiện đại

Lời hứa cực kỳ quan trọng khi viết JavaScript hiện đại – nếu bạn chưa quen với chúng, bạn nên dành một hoặc hai ngày để hiểu rõ về chúng

Đây là cách viết một tệp văn bản từ Node. js

// Import the promise-based version of the fs library
const fs = require('fs').promises;

// Define some text to be written to a file
var textData = "Hello world!";

try {
    // Write text to the given file name
    // await tells JavaScript to wait for the asyncronous function (Promise) to resolve before continuing
    await fs.writeFile('myFile.txt', textData); 
} catch (error) {
    // Output any errors for inspection
    console.log(error);
}

Lưu ý việc sử dụng câu lệnh try/catch để xử lý bất kỳ lỗi nào có thể xảy ra

Nối vào một tệp từ nút. js

Tiếp theo phần trên, thật đơn giản khi sử dụng thư viện fs để nối dữ liệu vào một tệp

const fs = require('fs').promises;

try {
    await fs.appendFile('myFile.txt', textData); 
} catch (error) {
    console.log(error);
}

Cập nhật tệp

Để cập nhật một tệp, bạn có thể thêm vào tệp đó bằng cách sử dụng appendFile hoặc ghi đè lên tệp đó bằng cách sử dụng writeFile, như đã nêu ở trên

Có thể sử dụng JavaScript để ghi vào tệp không?

JavaScript bao gồm một gói có tên là “Hệ thống tệp”, được sử dụng để làm việc với các tệp. Gói này chứa một phương thức có tên là writeFile(), được sử dụng để ghi dữ liệu vào một tệp được chỉ định trong đối số của nó

JavaScript có thể đọc hoặc ghi tệp trên máy tính của người dùng không?

Không thể đọc hoặc ghi vào tệp trong ứng dụng khách .

Bạn có thể viết HTML trong tệp JavaScript không?

Có nhiều cách để viết html bằng JavaScript . tài liệu. ghi chỉ hữu ích khi bạn muốn ghi vào trang trước khi nó thực sự được tải.

JavaScript có thể chỉnh sửa tệp văn bản không?

Bạn có thể đọc dữ liệu trong tệp văn bản, sửa đổi dữ liệu đó trong JavaScript phía máy khách (không có Nút), sau đó xuất và lưu lại . Tuy nhiên, nó yêu cầu sự tương tác của người dùng.