다음을 통해 공유


방법: 파일 또는 폴더 만들기(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 클래스입니다.

참고 항목

참조

System.IO

개념

C# 프로그래밍 가이드

기타 리소스

파일 시스템 및 레지스트리(C# 프로그래밍 가이드)