¿Cómo operar el método fs.truncate() basado en devolución de llamada con promesas en Node.js?

El método fs.truncate() definido en el módulo Sistema de archivos de Node.js. El módulo del Sistema de Archivos es básicamente para interactuar con el disco duro de la computadora del usuario. El método truncate() se utiliza para modificar el contenido interno del archivo en bytes ‘len’. Si len es más corto que la longitud actual del archivo, el archivo se trunca a esa longitud de len y, si es mayor que la longitud del archivo, se rellena agregando bytes nulos (x00) hasta alcanzar len.

El método fs.truncate() se basa en la devolución de llamada. El uso de métodos de devolución de llamada genera una gran posibilidad de anidamiento de devolución de llamada o problemas infernales de devolución de llamada. Por lo tanto, para evitarlo, casi siempre nos gusta trabajar con un método basado en promesas. Usando algunos métodos adicionales de node.js, podemos operar un método basado en devolución de llamada de manera prometedora.

Sintaxis:

fs.truncate(path, len)

Nota: No se requiere devolución de llamada ya que operamos el método con promesas.

Parámetros: Este método acepta dos parámetros como se mencionó anteriormente y se describe a continuación:

  • ruta: es una string, un búfer o una URL que especifica la ruta al archivo de destino.
  • len: es un valor numérico que especifica la longitud del archivo después del cual se trunca el archivo. Es un parámetro opcional, el valor predeterminado es 0, es decir, si no se proporciona el parámetro len, se truncará todo el archivo.

Valor de retorno: si el método opera con promesas, devuelve una promesa que se resolverá sin argumentos si tiene éxito o se rechazará con un objeto de error si algo salió mal (por ejemplo, la ruta dada es una ruta al directorio o la ruta dada no existe).

Enfoque: el método fs.truncate() basado en la devolución de llamada. Para operarlo con promesas, primero, usamos el método promisify() definido en el módulo de utilidades para convertirlo en un método basado en promesas.

Ejemplo 1:
Nombre de archivo: index.js

// Importing File System and Utilities module
const fs = require('fs')
const util = require('util')
  
// Convert callback based methods to 
// promise based methods
const trunct = util.promisify(fs.truncate)
   
// The truncate operation
trunct('./testFile.txt')
// If file is successfully truncated
.then(() => {
  console.log('File contents are deleted!')
})
   
// If any error occurs
.catch(err => {
   console.log(`Error Occurs, 
   Error code -> ${err.code}, 
   Error NO -> ${err.errno}`);
});

Implementando la misma funcionalidad usando async-await.

// Importing File System and Utilities module
const fs = require('fs')
const util = require('util')
  
// Convert callback based methods to
// promise based methods
const trunct = util.promisify(fs.truncate)
   
const truncateFile = async (path) => {
  
  // The truncate operation
  await trunct(path)
  console.log('File contents are deleted!')
}
   
truncateFile('./testFile.txt')
// If any error occurs
.catch(err => {
   console.log(`Error Occurs, 
   Error code -> ${err.code}, 
   Error NO -> ${err.errno}`);
});

Contenido del archivo antes de ejecutar el programa:

Contenido del archivo después de ejecutar el programa:

Ejecute el archivo index.js con el siguiente comando:

node index.js

Producción:

File contents are deleted!

Ejemplo 2:
Nombre de archivo: index.js

// Importing File System and Utilities module
const fs = require('fs')
const util = require('util')
  
// Convert callback based methods to 
// promise based methods
const trunct = util.promisify(fs.truncate)
const readFileContent = util.promisify(fs.readFile)
   
// Fetching contents before truncate 
readFileContent('./testFile.txt')
.then(buff => {
  const oldContents = buff.toString()
  console.log(`\nContents before 
      truncate : \n${oldContents}`)
   
  // The truncate operation
  return trunct('./testFile.txt', 18)
})
   
// If file is successfully truncated
.then(() => {
  console.log('\nTruncate done!\n')
   
  // Fetching contents after truncate 
  return readFileContent('./testFile.txt')
})
   
.then(buff => {
  const newContents = buff.toString()
  console.log(`Contents after 
    truncate : \n${newContents}`)
})
    
// If any error occurs
.catch(err => {
   console.log(`Error Occurs, 
   Error code -> ${err.code}, 
   Error NO -> ${err.errno}`);
});

Implementando la misma funcionalidad usando async-await.

// Importing File System and Utilities module
const fs = require('fs')
const util = require('util')
  
// Convert callback based methods 
// to promise based methods
const trunct = util.promisify(fs.truncate)
const readFileContent = util.promisify(fs.readFile)
   
// Function to fetch file contents
const fetchFileContents = async (path) => {
  const buff = await readFileContent(path)
  return buff.toString()
}
   
// Function to truncate
const truncateFile = async (path, len) => {
     
  // Fetching contents before truncate 
  const oldContents = await fetchFileContents(path)
  console.log(`\nContents before 
    truncate : \n${oldContents}`)
     
  // The truncate operation
  const buff = await trunct(path, len)
  console.log('\nTruncate done!\n')
   
  // Fetching contents before truncate 
  const newContents = await fetchFileContents(path)
  console.log(`Contents after 
    truncate : \n${newContents}`)
}
   
truncateFile('./testFile.txt', 18)
  
// If any error occurs
.catch(err => {
   console.log(`Error Occurs, 
   Error code -> ${err.code}, 
   Error NO -> ${err.errno}`);
})

Ejecute el archivo index.js con el siguiente comando:

node index.js

Contenido del archivo antes de ejecutar el programa:

Contenido del archivo después de ejecutar el programa:

Producción:

Publicación traducida automáticamente

Artículo escrito por hunter__js y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *