Cómo escribir en un archivo usando JavaScript, con ejemplos

Este artículo le mostrará cómo escribir en archivos desde JavaScript – tanto desde el navegador web como desde entornos Node.js. Con ejemplos sobre cómo escribir, agregar, actualizar, eliminar y renombrar archivos.

El código JavaScript generalmente se ejecuta desde uno de dos entornos:dentro de un navegador web al ver una página web o en un entorno Node.js que permite que JavaScript se ejecute fuera de un navegador web, comúnmente utilizado para crear servicios de back-end y aplicaciones web. .

Escribir en un archivo desde el navegador con JavaScript

Primero, cómo hacerlo desde el navegador. JavaScript moderno incluye herramientas integradas para esto. Los pasos son los siguientes:

  • Cree un archivo usando JavaScript Blob objeto para representar el archivo
  • Cree una URL para el nuevo objeto
  • Proporcione un enlace en el que el usuario pueda hacer clic para decirle al navegador que descargue el objeto Blob de la URL como un archivo

Luego, el usuario puede hacer clic en el enlace y se le presentará el cuadro de diálogo estándar para guardar desde su navegador web, lo que le permitirá guardar el archivo generado donde lo desee.

Así es como se ve el código como una función reutilizable que puede copiar y pegar para usarla usted mismo:

// 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!');
});

Necesitará el siguiente enlace en su HTML para mostrar un botón de descarga:

<!-- Download link - defaults to # which means clicking it does nothing as no file download link has been assigned (yet) -->
<!-- Note the use of the download attribute! It tells the browser to download the file, and what the default file name should be -->
<a id="downloadLink" href="#" download="myFile.txt">Download</a>

Esta solución no intenta emular hacer clic en los enlaces generados ni ninguna de esas tonterías. Por lo general, los navegadores lo bloquearán, y no debería intentar pasar descargas a un usuario sin que haga clic expresamente en un enlace para guardar el archivo de todos modos.

Escribir en un archivo desde Node.js

Si está trabajando en un entorno Node.js, todas las herramientas para administrar archivos están disponibles en el fs integrado. biblioteca.

Leer o escribir archivos lleva tiempo y puede detener la ejecución. Anteriormente, era mejor usar devoluciones de llamada para realizar operaciones de archivo una vez que un archivo se ha leído o escrito con éxito.

Ahora, sin embargo, Promises proporciona un enfoque estandarizado para tareas asincrónicas. Por lo tanto, estos ejemplos usarán Promesas en lugar de devoluciones de llamada para mantener las cosas modernas.

Las promesas son muy importantes al escribir JavaScript moderno:si aún no está familiarizado con ellas, vale la pena tomarse uno o dos días para conocerlas bien.

Aquí se explica cómo escribir un archivo de texto desde 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);
}

Tenga en cuenta el uso de una instrucción try/catch para manejar cualquier error que pueda ocurrir.

Adjuntar a un archivo desde Node.js

Continuando con lo anterior, es simple usar el fs biblioteca para agregar datos a un archivo:

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

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

Actualización de un archivo

Para actualizar un archivo, puede agregarlo usando appendFile o sobrescríbalo usando writeFile , como se describe anteriormente.

Renombrar un archivo

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

try {
    await fs.rename('oldFileName.txt', 'newFileName.txt'); 
} catch (error) {
    console.log(error);
}

Eliminar un archivo

El desvincular la función eliminará un archivo del disco:

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

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