Necesito saber si puedo crear un archivo en una carpeta específica, pero hay demasiadas cosas para verificar, como permisos, archivos duplicados, etc. I Estoy buscando algo como File.CanCreate(@"C:\myfolder\myfile.aaa"
), pero no he encontrado tal método. Lo único que pensé es intentar crear un archivo ficticio y verificar excepciones, pero esta es una solución desagradable que también afecta el rendimiento. ¿Conoces una mejor solución?Cómo comprobar si puedo crear un archivo en una carpeta específica
6
A
Respuesta
14
En realidad, la creación de un archivo ficticio no tendrá un gran impacto en el rendimiento en la mayoría de las aplicaciones. Por supuesto, si se ha avanzado con permisos de crear, pero no destruirlo podría ser un poco peludo ...
GUID siempre son muy útiles para los nombres al azar (para evitar conflictos) - algo así como:
string file = Path.Combine(dir, Guid.NewGuid().ToString() + ".tmp");
// perhaps check File.Exists(file), but it would be a long-shot...
bool canCreate;
try
{
using (File.Create(file)) { }
File.Delete(file);
canCreate = true;
}
catch
{
canCreate = false;
}
1
Usted puede usar CAS para verificar que no haya políticas .NET (caspol) que restringen la creación y escritura de un archivo en esa ubicación.
Pero esto no cubrirá las políticas de Windows. Deberá verificar manualmente las políticas NTFS. Y aun así, hay procesos que pueden decidir que no está permitido crear un archivo (por ejemplo, un antivirus).
La mejor y más completa forma es intentarlo.
Cuestiones relacionadas
- 1. ¿Cómo comprobar si un archivo existe en una carpeta?
- 2. Comprobar si un archivo es una imagen
- 3. ¿Cómo puedo descomprimir una carpeta específica?
- 4. ¿Cómo puedo comprobar si existe un objeto con una propiedad específica en una matriz de Ruby?
- 5. ¿Cómo puedo crear una carpeta, si no existe, desde .vimrc?
- 6. Comprobar si un nombre de archivo es una carpeta o un archivo
- 7. Cómo comprobar si un archivo está completamente copiado en .NET
- 8. Comprobar si existe el archivo sin crear
- 9. ¿Cómo crear un archivo en Java (no en una carpeta)?
- 10. Compruebe si una ruta representa un archivo o una carpeta
- 11. Cómo comprobar si un archivo existe en un archivo MAKE
- 12. ¿Cómo puedo crear un archivo temporal con una extensión específica en bash?
- 13. ¿Cómo puedo saber si un elemento contiene una clase específica?
- 14. Cómo comprobar si existe un archivo desde una url
- 15. Linux cómo agregar un archivo a una carpeta específica dentro de un archivo zip
- 16. ¿cómo puedo crear una carpeta temporal en java 6?
- 17. cómo comprobar si un archivo tiene una firma digital
- 18. ¿Cómo comprobar si existe un directorio que contiene un archivo?
- 19. Cómo comprobar si existe un archivo en un servidor externo
- 20. ¿Cómo puedo crear una carpeta HTML pública en Ubuntu?
- 21. ¿Cómo comprobar si un TR contiene un TD con una clase de CSS específica con jquery?
- 22. Error al comprobar si existe un archivo
- 23. ¿Cómo puedo verificar si existe un archivo en Perl?
- 24. Crear una carpeta si no existe
- 25. ¿Cómo puedo comprobar si se modificó el contenido de una carpeta?
- 26. Compruebe si el archivo existe y si contiene una cadena específica
- 27. ¿Cómo comprobar rápidamente si la carpeta está vacía (.NET)?
- 28. Cómo guardo un archivo descargado con HttpClient en una carpeta específica
- 29. crear un archivo de texto en una carpeta
- 30. cómo comprobar si java.lang.reflect.Type es una enumeración
Tenga en cuenta, sin embargo, que si comprueba si puede crear un archivo (en cualquier caso) y luego, más tarde, crear realmente el archivo podría generar un error (aquí tiene condiciones de carrera). Por lo tanto, generalmente lo mejor es crear el archivo (final) en primer lugar y manejar posibles errores/excepciones. –
Tiene razón, pero proporciono esta información para su uso posterior, solo soy responsable de brindar esta información, si los permisos cambian después de eso, se producirá otro tipo de error. –