Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

151
Visualizações
Agregar cero bytes a un archivo

¿Hay alguna manera de agregar cero bytes a un archivo sin tener que crear un valor de datos vacío?

 let handle : FileHandle = ... let count : Int = ... try handle.seekToEnd() try handle.write(contentsOf: Data(repeating: 0, count: count))
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

write(contentsOf:) toma cualquier DataProtocol como parámetro. Puede crear un Repeated<UInt8> , que se ajuste a DataProtocol , usando repeatElement :

 try fileHandle.write(contentsOf: repeatElement(0, count: someCount))

Repeated<T> es una representación eficiente de una colección con un solo elemento único repetido n veces. De acuerdo con la implementación , cuando someCount > 0 , esto solo creará una instancia Data que contenga solo un 0.

over 4 years ago · Santiago Trujillo Relatório

0

Puede agregar bytes nulos a un archivo con el método truncate(atOffset:) . De la documentación:

Trunca o extiende el archivo representado por el identificador de archivo a un desplazamiento especificado dentro del archivo y coloca el puntero del archivo en esa posición.

Si el archivo se extiende (si el desplazamiento está más allá del final actual del archivo), los caracteres agregados son bytes nulos.

No se necesita valor de datos ni operación de escritura para este propósito.

Ejemplo:

 let handle : FileHandle = ... let numberOfBytesToAppend: UInt64 = ... var size = try handle.seekToEnd() // Get current size size += numberOfBytesToAppend // Compute new size try handle.truncate(atOffset: size) // Extend file try handle.close()

Un seguimiento de llamada al sistema con dtruss muestra que la extensión del archivo se realiza de manera eficiente con la llamada al sistema ftruncate :

$ sudo dtruss /ruta/al/programa
  ...
  920/0x3c0b: abierto("archivo.txt\0", 0x1, 0x0) = 3 0
  920/0x3c0b: fstat64(0x3, 0x7FFEE381B358, 0x0) = 0 0
  920/0x3c0b: lbuscar(0x3, 0x0, 0x2) = 6000 0
  920/0x3c0b: lbuscar(0x3, 0x1B58, 0x0) = 7000 0
  920/0x3c0b: ftruncate(0x3, 0x1B58, 0x0) = 0 0
  920/0x3c0b: cerrar (0x3) = 0 0
  ...
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda