방법: 파일 또는 폴더 만들기(C# 프로그래밍 가이드)
하면 프로그래밍 방식으로 사용자의 컴퓨터에 폴더를 만듭니다, 그리고 하위 폴더의 하위 폴더에 있는 파일을 만들 만들고 수 데이터 파일에 쓸.
예제
public class CreateFileOrFolder
{
static void Main()
{
// Specify a name for your top-level folder.
string folderName = @"c:\Top-Level Folder";
// To create a string that specifies the path to a subfolder under your
// top-level folder, add a name for the subfolder to folderName.
string pathString = System.IO.Path.Combine(folderName, "SubFolder");
// You can write out the path name directly instead of using the Combine
// method. Combine just makes the process easier.
string pathString2 = @"c:\Top-Level Folder\SubFolder2";
// You can extend the depth of your path if you want to.
//pathString = System.IO.Path.Combine(pathString, "SubSubFolder");
// Create the subfolder. You can verify in File Explorer that you have this
// structure in the C: drive.
// Local Disk (C:)
// Top-Level Folder
// SubFolder
System.IO.Directory.CreateDirectory(pathString);
// Create a file name for the file you want to create.
string fileName = System.IO.Path.GetRandomFileName();
// This example uses a random string for the name, but you also can specify
// a particular name.
//string fileName = "MyNewFile.txt";
// Use Combine again to add the file name to the path.
pathString = System.IO.Path.Combine(pathString, fileName);
// Verify the path that you have constructed.
Console.WriteLine("Path to my file: {0}\n", pathString);
// Check that the file doesn't already exist. If it doesn't exist, create
// the file and write integers 0 - 99 to it.
// DANGER: System.IO.File.Create will overwrite the file if it already exists.
// This could happen even with random file names, although it is unlikely.
if (!System.IO.File.Exists(pathString))
{
using (System.IO.FileStream fs = System.IO.File.Create(pathString))
{
for (byte i = 0; i < 100; i++)
{
fs.WriteByte(i);
}
}
}
else
{
Console.WriteLine("File \"{0}\" already exists.", fileName);
return;
}
// Read and display the data from your file.
try
{
byte[] readBuffer = System.IO.File.ReadAllBytes(pathString);
foreach (byte b in readBuffer)
{
Console.Write(b + " ");
}
Console.WriteLine();
}
catch (System.IO.IOException e)
{
Console.WriteLine(e.Message);
}
// Keep the console window open in debug mode.
System.Console.WriteLine("Press any key to exit.");
System.Console.ReadKey();
}
// Sample output:
// Path to my file: c:\Top-Level Folder\SubFolder\ttxvauxe.vv0
//0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
//30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
// 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 8
//3 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
}
폴더가 이미 있을 경우 CreateDirectory는 아무 작업도 수행하지 않으며 예외가 throw되지 않습니다.그러나 File.Create 기존 파일을 새 파일로 바꿉니다.예제는 if-else 교체 하 고 기존 파일을 방지 하기 위해 문을.
예제에서는 다음과 같이 변경 하 여 특정 이름의 파일이 이미 있는지 여부에 따라 서로 다른 결과 지정할 수 있습니다.이러한 파일이 존재 하지 않으면이 코드를 하나 만듭니다.이러한 파일이 있는 경우 코드 해당 파일에 데이터를 추가 합니다.
-무작위 파일 이름을 지정 합니다.
// Comment out the following line. //string fileName = System.IO.Path.GetRandomFileName(); // Replace that line with the following assignment. string fileName = "MyNewFile.txt";
대체는 if-else 문으로 using 문을 다음 코드에서.
using (System.IO.FileStream fs = new System.IO.FileStream(pathString, FileMode.Append)) { for (byte i = 0; i < 100; i++) { fs.WriteByte(i); } }
예제를 여러 번 실행 데이터를 확인 하려면 파일을 때마다 추가 됩니다.
자세한 내용은 FileMode 볼 수 있습니다 값 FileMode.
다음 조건에서 예외가 발생할 수 있습니다.
폴더 이름의 형식이 잘못된 경우.예를 들어, 파일 이름에 잘못된 문자가 포함되어 있거나 파일 이름이 공백인 경우(ArgumentException 클래스)사용은 Path 클래스에 유효한 경로 이름을 만듭니다.
만들 폴더의 부모 폴더가 읽기 전용인 경우(IOException 클래스)
폴더 이름이 null인 경우(ArgumentNullException 클래스)
폴더 이름이 너무 긴 경우(PathTooLongException 클래스)
폴더 이름이 콜론 ":"인 경우(PathTooLongException 클래스)
보안
인스턴스는 SecurityException 클래스는 부분 신뢰 상황에서 throw 될 수 있습니다.
폴더를 만들 수 있는 사용 권한이 없는 경우이 예제에서는 인스턴스를 throw 된 UnauthorizedAccessException 클래스입니다.