"네트워크 하드 디스크" 기능을 설계하려면 먼저 .NET에서 파일 및 폴더 처리 작업을 잘 알고 있어야 합니다. 파일 클래스와 디렉토리 클래스는 가장 중요한 두 가지 클래스입니다. 이를 이해하면 후속 기능의 구현이 크게 쉬워집니다.
System.IO.File 클래스와 System.IO.FileInfo 클래스는
"네트워크 하드 디스크"를 설계하고 구현하는 과정에서 파일 시스템 작업과 관련된 내용을 광범위하게 활용합니다. 따라서 이 섹션에서는 먼저 파일 시스템과 관련된 두 가지 .NET 클래스를 간략하게 소개합니다.
System.IO.File 클래스와 System.IO.FileInfo 클래스는 주로 파일과 관련된 다양한 연산을 제공하며, 이를 사용할 때 System.IO 네임스페이스를 참조해야 합니다. 아래에서는 프로그램 예제를 통해 주요 속성과 방법을 소개합니다.
(1) 파일 열기 방법: File.Open
이 방법의 선언은 다음과 같습니다.
public static FileStream Open(string path,FileMode mode)
다음 코드는 c:tempuploads 디렉터리에 저장된 newFile.txt라는 파일을 열고, 파일에 hello를 입력하세요.
개인 무효 OpenFile()
{
FileStream.TextFile=File.Open(@"c:tempuploadsnewFile.txt",FileMode.Append);
byte [] Info = {(바이트)'h',(바이트)'e',(바이트)'l',(바이트)'l',(바이트)'o'};
TextFile.Write(Info,0,Info.Length);
텍스트파일.닫기();
}
(2) 파일 생성 방법: File.Create
이 메서드의 선언은 다음과 같습니다.
public static FileStream Create(string path;)
다음 코드는 c:tempuploads 아래에 newFile.txt라는 파일을 생성하는 방법을 보여줍니다.
File.Create 메서드는 기본적으로 모든 사용자에게 새 파일에 대한 전체 읽기/쓰기 액세스 권한을 부여하므로 파일은 읽기/쓰기 액세스 권한으로 열리며 다른 애플리케이션에서 열려면 먼저 닫아야 합니다. 이렇게 하려면 FileStream 클래스의 Close 메서드를 사용하여 생성된 파일을 닫아야 합니다.
개인 무효 MakeFile()
{
FileStream NewText=File.Create(@"c:tempuploadsnewFile.txt");
NewText.Close();
}
(3) 파일 삭제 방법: File.Delete
이 방법은 다음과 같이 선언됩니다.
public static void Delete(string path)
다음 코드는 c:tempuploads 디렉터리에 있는 newFile.txt 파일을 삭제하는 방법을 보여줍니다.
개인 무효 삭제파일()
{
File.Delete(@"c:tempuploadsnewFile.txt");
}
(4) 파일 복사 방법: File.Copy
이 방법은 다음과 같이 선언됩니다.
public static void Copy(string sourceFileName,string destFileName,bool overwrite)
다음 코드는 c:tempuploadsnewFile.txt를 c:tempuploads로 복사합니다. 백업.txt.
Cope 메서드의 OverWrite 매개 변수가 true로 설정되어 있으므로 BackUp.txt 파일이 이미 있으면 복사된 파일로 덮어쓰게 됩니다.
개인 무효 CopyFile()
{
File.Copy(@"c:tempuploadsnewFile.txt",@"c:tempuploadsBackUp.txt",true);
}
(5) 파일 이동 방법: File.Move
이 방법은 다음과 같이 선언됩니다.
public static void Move(string sourceFileName,string destFileName)
다음 코드는 c:tempuploads 아래의 BackUp.txt 파일을 루트 디렉터리로 이동할 수 있습니다. 드라이브 c.
참고:
파일 전송은 동일한 논리 디스크에서만 수행할 수 있습니다. c 드라이브에서 d 드라이브로 파일을 전송하려고 하면 오류가 발생합니다.
개인 무효 MoveFile()
{
File.Move(@"c:tempuploadsBackUp.txt",@"c:BackUp.txt");
}
(6) 파일 속성 설정 메소드: File.SetAttributes
이 메소드는 다음과 같이 선언됩니다.
public static void SetAttributes(string path,FileAttributes fileAttributes)
다음 코드는 c:tempuploadsnewFile.txt 파일의 속성을 다음과 같이 설정할 수 있습니다. 읽기 전용 또는 숨김.
개인 무효 SetFile()
{
File.SetAttributes(@"c:tempuploadsnewFile.txt",
FileAttributes.ReadOnly|FileAttributes.Hidden);
}
일반적으로 사용되는 읽기 전용 및 숨김 속성 외에도 파일에는 Archive(파일 보관 상태), System(시스템 파일), Temporary(임시 파일) 등이 있습니다. 파일 속성에 대한 자세한 내용은 MSDN의 FileAttributes 설명을 참조하세요.
(7) 파일 존재 여부를 확인하는 메소드: File.Exist
이 메소드는 다음과 같이 선언됩니다.
public static bool Exists(string path)
다음 코드는 c:tempuploadsnewFile.txt 파일이 존재하는지 확인합니다. 존재하는 경우 먼저 파일을 복사한 다음 삭제하고 마지막으로 복사된 파일을 이동합니다. 존재하지 않는 경우 먼저 파일을 만든 다음 파일을 열고 쓰기 작업을 수행하고 마지막으로 파일 속성을 읽기 전용으로 설정합니다. 그리고 숨겨져 있습니다.
if(File.Exists(@"c:tempuploadsnewFile.txt")) //파일이 존재하는지 확인
{
CopyFile(); //파일을 복사합니다.DeleteFile(); //파일을 삭제합니다.MoveFile();
}
또 다른
{
MakeFile(); //파일 생성 OpenFile(); //파일 열기 SetFile();
}
또한 File 클래스는 Text 텍스트에 대한 추가 지원을 제공합니다.
· AppendText: 기존 파일에 텍스트 추가
· CreateText: 텍스트 작성을 위해 새 파일을 만들거나 엽니다
. · OpenText: 읽기 위해 기존 텍스트 파일을 엽니다
. 하지만 위 방법은 주로 UTF-8로 인코딩된 텍스트에서 작동하므로 유연하지 않습니다. txt 파일을 조작하려면 독자가 다음 코드를 사용하는 것이 좋습니다.
· txt 파일에 대해 "읽기" 작업을 수행합니다. 샘플 코드는 다음과 같습니다.
StreamReader TxtReader = new StreamReader(@"c:tempuploadsnewFile.txt",System.Text.Encoding.Default);
문자열 FileContent;
FileContent = TxtReader.ReadEnd();
TxtReader.Close();
· txt 파일에 대해 "쓰기" 작업을 수행합니다.
StreamWriter = new StreamWrite(@"c:tempuploadsnewFile.txt",System.Text.Encoding.Default);
문자열 FileContent;
TxtWriter.Write(파일컨텐트);
TxtWriter.Close();
System.IO.Directory 클래스와 System.DirectoryInfo 클래스는
주로 디렉터리에 대한 다양한 작업을 제공하며, 이를 사용할 때는 System.IO 네임스페이스를 참조해야 합니다. 아래에서는 프로그램 예제를 통해 주요 속성과 방법을 소개합니다.
(1) 디렉터리 생성 방법: Directory.CreateDirectory
이 메서드는 다음과 같이 선언됩니다.
public static DirectoryInfo CreateDirectory(string path)
다음 코드는 c:tempuploads 폴더에 NewDirectory라는 디렉터리를 생성하는 방법을 보여줍니다.
개인 무효 MakeDirectory()
{
Directory.CreateDirectory(@"c:tempuploadsNewDirectoty");
}
(2) 디렉터리 속성 설정 방법:
DirectoryInfo.Atttributes 아래 코드는 c:tempuploadsNewDirectory 디렉터리를 읽기 전용 및 숨김으로 설정합니다. 파일 속성과 마찬가지로 디렉터리 속성도 FileAttributes를 사용하여 설정됩니다.
개인 무효 SetDirectory()
{
DirectoryInfo NewDirInfo = new DirectoryInfo(@"c:tempuploadsNewDirectoty");
NewDirInfo.Atttributes = FileAttributes.ReadOnly|FileAttributes.Hidden;
}
(3) 디렉터리 삭제 방법: Directory.Delete
이 메서드는 다음과 같이 선언됩니다.
public static void Delete(string path,bool recursive)
다음 코드는 c:tempuploadsBackUp 디렉터리를 삭제할 수 있습니다. 삭제 메서드의 두 번째 매개 변수는 비어 있지 않은 디렉터리를 삭제할지 여부를 결정할 수 있는 bool 유형입니다. 매개변수 값이 true이면 디렉터리에 파일이나 하위 디렉터리가 있어도 디렉터리 전체가 삭제되고, false이면 디렉터리가 비어 있는 경우에만 삭제됩니다.
개인 무효 삭제 디렉터리()
{
Directory.Delete(@"c:tempuploadsBackUp",true);
}
(4) 디렉터리 이동 메서드: Directory.Move
이 메서드는 다음과 같이 선언됩니다.
public static void Move(string sourceDirName, string destDirName)
다음 코드는 c:tempuploadsNewDirectory 디렉터리를 c:tempuploadsBackUp으로 이동합니다.
개인 무효 MoveDirectory()
{
File.Move(@"c:tempuploadsNewDirectory",@"c:tempuploadsBackUp");
}
(5) 현재 디렉터리의 모든 하위 디렉터리 가져오기: Directory.GetDirectories
이 메서드는 다음과 같이 선언됩니다.
public static string[] GetDirectories(string path;)
다음 코드는 c:tempuploads 디렉터리의 모든 하위 디렉터리를 읽습니다. 문자열 배열에 저장합니다.
개인 무효 GetDirectory()
{
문자열 [] 디렉토리;
디렉토리 = 디렉토리.GetDirectories(@"c:tempuploads");
}
(6) 현재 디렉터리의 모든 파일을 가져오는 메서드: Directory.GetFiles
이 메서드는 다음과 같이 선언됩니다.
public static string[] GetFiles(string path;)
다음 코드는 c:tempuploads의 모든 파일을 읽습니다. 디렉토리로 이동하여 문자열 배열에 저장합니다.
개인 무효 GetFile()
{
문자열 [] 파일;
파일 = 디렉터리.GetFiles(@"c:tempuploads",);
}
(7) 디렉터리 존재 여부를 확인하는 메서드: Directory.Exist
이 메서드는 다음과 같이 선언됩니다.
public static bool Exists(
문자열 경로;
);
다음 코드는 c:tempuploadsNewDirectory 디렉터리가 있는지 확인합니다. 존재하는 경우 먼저 디렉터리에 있는 하위 디렉터리와 파일을 얻은 다음 이동하고 마지막으로 이동된 디렉터리를 삭제합니다. 존재하지 않는 경우 먼저 디렉터리를 생성한 다음 디렉터리 특성을 읽기 전용 및 숨김으로 설정합니다.
if(File.Exists(@"c:tempuploadsNewDirectory")) //디렉토리가 존재하는지 확인
{
GetDirectory(); //하위 디렉토리 가져오기 GetFile(); //파일 가져오기 MoveDirectory(); //디렉토리 삭제
}
또 다른
{
MakeDirectory(); //디렉토리 생성 SetDirectory(); //디렉터리 속성 설정
}
참고:
경로를 지정하는 방법에는 현재 디렉터리의 상대 경로, 현재 작업 디스크의 상대 경로, 절대 경로 등 세 가지가 있습니다. C:TmpBook을 예로 들어 보겠습니다(현재 작업 디렉터리가 C:Tmp라고 가정). "Book", "TmpBook", "C:TmpBook"은 모두 C:TmpBook을 의미합니다.
또한 ""는 C#의 특수문자이므로 이를 표현하려면 "\"를 사용해야 합니다. 이런 방식의 작성은 불편하기 때문에 C# 언어에서는 이를 단순화하기 위해 @를 제공합니다. ""를 직접 사용하려면 문자열 앞에 @를 추가하면 됩니다. 따라서 위 경로는 C#에서는 "Book", @"TmpBook", @"C:TmpBook" 으로 표현되어야 합니다.