Il modo migliore per rendere scrivibile un file in c #
-
05-07-2019 - |
Domanda
Sto cercando di impostare il flag che fa apparire la casella di controllo Sola lettura
quando fai clic con il pulsante destro del mouse su \ Proprietà
su un file.
Grazie!
Soluzione
Due modi:
System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);
fileInfo.IsReadOnly = true/false;
o
// Careful! This will clear other file flags e.g. FileAttributes.Hidden
File.SetAttributes(filePath, FileAttributes.ReadOnly/FileAttributes.Normal);
La proprietà IsReadOnly su FileInfo essenzialmente fa il bit-flipping che dovresti fare manualmente nel secondo metodo.
Altri suggerimenti
Per impostare il flag di sola lettura, rendendo in effetti il ??file non scrivibile:
File.SetAttributes(filePath,
File.GetAttributes(filePath) | FileAttributes.ReadOnly);
Per rimuovere il flag di sola lettura, rendendo in effetti il ??file scrivibile:
File.SetAttributes(filePath,
File.GetAttributes(filePath) & ~FileAttributes.ReadOnly);
Per attivare / disattivare la bandiera di sola lettura, rendendola l'opposto di qualunque cosa sia adesso:
File.SetAttributes(filePath,
File.GetAttributes(filePath) ^ FileAttributes.ReadOnly);
Questa è sostanzialmente una maschera di bit attiva. Si imposta un bit specifico per impostare il flag di sola lettura, lo si cancella per rimuovere il flag.
Nota che il codice sopra non cambierà altre proprietà del file. In altre parole, se il file è stato nascosto prima di aver eseguito il codice sopra, rimarrà nascosto anche in seguito. Se imposti semplicemente gli attributi del file su .Normal
o .ReadOnly
potresti perdere altre bandiere nel processo.
c #:
File.SetAttributes (filePath, FileAttributes.Normal);
File.SetAttributes (filePath, FileAttributes.ReadOnly);