Para projetar a função "disco rígido de rede", você deve primeiro estar familiarizado com as operações de processamento de arquivos e pastas no .NET. A classe de arquivo e a classe de diretório são as duas classes mais importantes. Compreendê-los facilitará muito a implementação das funções subsequentes.
A classe System.IO.File e a classe System.IO.FileInfo
farão uso extensivo de conteúdo relacionado às operações do sistema de arquivos no processo de projeto e implementação do "disco rígido de rede". Portanto, esta seção primeiro apresenta brevemente as duas classes .NET relacionadas ao sistema de arquivos.
A classe System.IO.File e a classe System.IO.FileInfo fornecem principalmente várias operações relacionadas a arquivos, e você precisa fazer referência ao namespace System.IO ao usá-las. Seus principais atributos e métodos são apresentados a seguir por meio de exemplos de programas.
(1) Método de abertura de arquivo: File.Open
A declaração deste método é a seguinte:
public static FileStream Open(string path,FileMode mode)
O código a seguir abre o arquivo chamado newFile.txt armazenado no diretório c:tempuploads e no arquivo Escreva olá em .
privado vazio OpenFile()
{
FileStream.TextFile=File.Open(@"c:tempuploadsnewFile.txt",FileMode.Append);
byte [] Informações = {(byte)'h',(byte)'e',(byte)'l',(byte)'l',(byte)'o'};
TextFile.Write(Info,0,Info.Length);
TextFile.Fechar();
}
(2) Método de criação de arquivo: File.Create
A declaração deste método é a seguinte:
public static FileStream Create(string path;)
O código a seguir demonstra como criar um arquivo chamado newFile.txt em c:tempuploads.
Como o método File.Create concede acesso total de leitura/gravação a novos arquivos por padrão para todos os usuários, o arquivo é aberto com acesso de leitura/gravação e deve ser fechado antes de poder ser aberto por outro aplicativo. Para fazer isso, você precisa usar o método Close da classe FileStream para fechar o arquivo criado.
vazio privado MakeFile()
{
FileStream NewText=File.Create(@"c:tempuploadsnewFile.txt");
NovoTexto.Close();
}
(3) Método de exclusão de arquivo: File.Delete
Este
método é declarado da seguinte forma:
public static void Delete(string path);
vazio privado DeleteFile()
{
Arquivo.Delete(@"c:tempuploadsnewFile.txt");
}
de
cópia de arquivo: File.Copy
Este método é declarado da seguinte forma:
public static void Copy(string sourceFileName,string destFileName,bool overwrite);
BackUp.txt.
Como o parâmetro OverWrite do método Cope está definido como verdadeiro, se o arquivo BackUp.txt já existir, ele será substituído pelo arquivo copiado.
privado vazio CopyFile()
{
Arquivo.Copy(@"c:tempuploadsnewFile.txt",@"c:tempuploadsBackUp.txt",true);
}
(5) Método de movimentação de arquivo: File.Move
Este
método é declarado da seguinte forma:
public static void Move(string sourceFileName,string destFileName);
dirigir c.
Nota:
A transferência de arquivos só pode ser feita no mesmo disco lógico. Se você tentar transferir arquivos da unidade c para a unidade d, ocorrerá um erro.
privado vazio MoveFile()
{
Arquivo.Move(@"c:tempuploadsBackUp.txt",@"c:BackUp.txt");
}
(6) Método de definição de atributos de arquivo: File.SetAttributes
Este
método é declarado da seguinte forma:
public static void SetAttributes(string path,FileAttributes fileAttributes);
somente leitura ou oculto.
privado vazio SetFile()
{
Arquivo.SetAttributes(@"c:tempuploadsnewFile.txt",
FileAttributes.ReadOnly|FileAttributes.Hidden);
}
Além dos atributos somente leitura e ocultos comumente usados, os arquivos também possuem Arquivo (status de arquivo arquivado), Sistema (arquivos de sistema), Temporário (arquivos temporários), etc. Para obter detalhes sobre atributos de arquivo, consulte a descrição de FileAttributes no MSDN.
(7) Método para determinar se um arquivo existe: File.Exist
Este
método é declarado da seguinte forma:
public static bool Exists(string path);
Se existir, primeiro copie o arquivo, depois exclua-o e, por fim, mova o arquivo copiado, se não existir, primeiro crie o arquivo, depois abra o arquivo e execute as operações de gravação e, por fim, defina os atributos do arquivo como somente leitura; e escondido.
if(File.Exists(@"c:tempuploadsnewFile.txt")) //Determina se o arquivo existe
{
CopyFile(); //Copia o arquivoDeleteFile(); //Exclui o arquivoMoveFile();
}
outro
{
MakeFile(); //Gerar arquivo OpenFile(); //Abrir arquivo SetFile();
}
Além disso, a classe File fornece mais suporte para texto Text.
· AppendText: acrescenta texto a um arquivo existente
· CreateText: cria ou abre um novo arquivo para escrever texto
· OpenText: abre um arquivo de texto existente para leitura
Mas o método acima opera principalmente em texto codificado em UTF-8, parecendo, portanto, não flexível o suficiente. Recomenda-se que os leitores utilizem o seguinte código para operar arquivos txt.
· Execute a operação de "leitura" em arquivos txt O código de exemplo é o seguinte:
StreamReader TxtReader = new StreamReader(@"c:tempuploadsnewFile.txt",System.Text.Encoding.Default);
stringConteúdoArquivo;
FileContent = TxtReader.ReadEnd();
TxtReader.Close();
· Executar operação de "gravação" no arquivo txt. O código de exemplo é o seguinte:
StreamWriter = new StreamWrite(@"c:tempuploadsnewFile.txt",System.Text.Encoding.Default);
stringConteúdoArquivo;
TxtWriter.Write(FileContent);
TxtWriter.Close();
A classe System.IO.Directory e a classe System.DirectoryInfo
fornecem principalmente várias operações no diretório e você precisa fazer referência ao namespace System.IO ao usá-las. Seus principais atributos e métodos são apresentados a seguir por meio de exemplos de programas.
(1) Método de criação de diretório: Directory.CreateDirectory
Este
método é declarado da seguinte forma:
public static DirectoryInfo CreateDirectory(string path);
privado vazio MakeDirectory()
{
Directory.CreateDirectory(@"c:tempuploadsNewDirectoty");
}
(2) Método de configuração de atributo de diretório:
O código abaixo DirectoryInfo.Atttributes define o diretório c:tempuploadsNewDirectory como somente leitura e oculto. Assim como os atributos de arquivo, os atributos de diretório também são definidos usando FileAttributes.
privado vazio SetDirectory()
{
DirectoryInfo NewDirInfo = new DirectoryInfo(@"c:tempuploadsNewDirectoty");
NewDirInfo.Atttributes = FileAttributes.ReadOnly|FileAttributes.Hidden;
}
:
Directory.Delete
Este método é declarado da seguinte forma:
public static void Delete(string path,bool recursive);
O segundo parâmetro do método Delete é do tipo bool, que pode determinar se um diretório não vazio deve ser excluído. Se o valor do parâmetro for verdadeiro, todo o diretório será excluído, mesmo que haja arquivos ou subdiretórios no diretório, se for falso, o diretório será excluído apenas se estiver vazio;
privado vazio DeleteDirectory()
{
Directory.Delete(@"c:tempuploadsBackUp",true);
}
(4) Método de movimentação de diretório: Directory.Move
Estemétodo
é declarado da seguinte forma:
public static void Move(string sourceDirName, string destDirName);
privado vazio MoveDirectory()
{
File.Move(@"c:tempuploadsNewDirectory",@"c:tempuploadsBackUp");
}
(5) Obtenha todos os subdiretórios no diretório atual: Directory.GetDirectories
Este método é declarado da seguinte forma:
public static string[] GetDirectories(string path;);
O código a seguir lê todos os subdiretórios no diretório c:tempuploads, e armazene-o em uma matriz de strings.
privado vazio GetDirectory()
{
string [] Diretórios;
Diretórios = Diretório. GetDirectories (@"c:tempuploads");
}
arquivos
no diretório atual: Directory.GetFiles
Este método é declarado da seguinte forma:
public static string[] GetFiles(string path;);
e armazene-o em uma matriz de strings.
privado vazio GetFile()
{
string [] Arquivos;
Arquivos = Diretório.GetFiles (@"c:tempuploads",);
}
(7) Método para determinar se um diretório existe: Directory.Exist
Este método é declarado da seguinte forma:
public static bool Exists(.
caminho de string;
);
O código a seguir determina se o diretório c:tempuploadsNewDirectory existe. Se existir, primeiro obtenha os subdiretórios e arquivos no diretório, depois mova-os e, por fim, exclua o diretório movido. Se não existir, crie o diretório primeiro e depois defina os atributos do diretório como somente leitura e ocultos.
if(File.Exists(@"c:tempuploadsNewDirectory")) //Determina se o diretório existe
{
GetDirectory(); //Obtém o subdiretório GetFile(); //Obtém o arquivo MoveDirectory(); //Move o diretório DeleteDirectory();
}
outro
{
MakeDirectory(); //Gerar diretório SetDirectory(); //Definir atributos do diretório
}
Nota:
Existem três maneiras de especificar um caminho: o caminho relativo no diretório atual, o caminho relativo no disco de trabalho atual e o caminho absoluto. Tome C:TmpBook como exemplo (assumindo que o diretório de trabalho atual seja C:Tmp). "Livro", "TmpBook", "C:TmpBook" significam C:TmpBook.
Além disso, "" é um caractere especial em C# e você precisa usar "\" para expressá-lo. Como essa forma de escrever é inconveniente, a linguagem C# fornece @ para simplificá-la. Basta adicionar @ na frente da string para usar "" diretamente. Portanto, o caminho acima deve ser expresso como "Book", @"TmpBook", @"C:TmpBook" em C#.