texto - leer y escribir archivos en c#
¿Cómo crear un archivo temporal(para escribir en) en C#? (3)
No conozco ninguna clase incorporada (dentro del framework) para hacer esto, pero me imagino que no sería un gran problema para ti.
Obviamente, depende del tipo de datos que desea escribir en él y de la "seguridad" requerida.
Este artículo sobre DevFusion puede ser un buen lugar para comenzar?
Posible duplicado:
Creando carpetas temporales
Estoy buscando algo así como el módulo tempfile
en Python: una forma (preferiblemente) segura de abrir un archivo para escribir. Esto debería ser fácil de eliminar cuando termine también ...
Parece que .NET no tiene las características de "baterías incluidas" del módulo tempfile
, que no solo crea el archivo, sino que devuelve el descriptor del archivo (la vieja escuela, lo sé ...) junto con la ruta. Al mismo tiempo, se asegura de que solo el usuario creador pueda acceder al archivo y a lo que sea ( mkstemp()
, creo): https://docs.python.org/library/tempfile.html
Ah, sí, puedo ver eso. Pero GetTempFileName tiene un inconveniente: hay una condición de carrera entre el momento en que se creó el archivo (al llamar a GetTempFileName se crea un archivo de 0 bytes) y cuando puedo abrirlo (después de devolver GetTempFileName). Esto podría ser un problema de seguridad, aunque no para mi aplicación actual ...
También he tenido el mismo requisito antes, y he creado una clase pequeña para resolverlo:
public sealed class TemporaryFile : IDisposable {
public TemporaryFile() :
this(Path.GetTempPath()) { }
public TemporaryFile(string directory) {
Create(Path.Combine(directory, Path.GetRandomFileName()));
}
~TemporaryFile() {
Delete();
}
public void Dispose() {
Delete();
GC.SuppressFinalize(this);
}
public string FilePath { get; private set; }
private void Create(string path) {
FilePath = path;
using (File.Create(FilePath)) { };
}
private void Delete() {
if (FilePath == null) return;
File.Delete(FilePath);
FilePath = null;
}
}
Crea un archivo temporal en una carpeta que especifique o en la carpeta temporal del sistema. Es una clase desechable, por lo que al final de su vida útil (ya sea Dispose
o el destructor), elimina el archivo. Obtiene el nombre del archivo creado (y ruta) a través de la propiedad FilePath
. Ciertamente puede ampliarlo para abrir también el archivo y escribir su FileStream
asociado.
Un ejemplo de uso:
using (var tempFile = new TemporaryFile()) {
// use the file through tempFile.FilePath...
}
Path.GetTempFileName y Path.GetTempPath. Luego puede usar este enlace para leer / escribir datos encriptados en el archivo.
Tenga en cuenta que .NET no es la mejor plataforma para aplicaciones de seguridad críticas. Tienes que estar bien informado sobre cómo funciona el CLR para evitar algunos de los escollos que pueden exponer tus datos críticos a los piratas informáticos.
Editar: Acerca de la condición de carrera ... Puede usar GetTempPath, luego crear un nombre de archivo temporal mediante el uso de
Path.Combine(Path.GetTempPath(), Path.ChangeExtension(Guid.NewGuid().ToString(), ".TMP"))