Porady: utworzenie pliku lub folderu (Przewodnik programowania w języku C#)
Możesz programowo utworzyć folder na komputerze, utworzyć podfolder, utworzyć plik w podfolderze i zapisać dane do pliku.
Przykład
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
}
Jeśli folder już istnieje, metoda CreateDirectory nic nie robi i nie jest generowany żaden wyjątek.Jednakże metoda File.Create zastępuje istniejący plik nowym plikiem.W przykładzie użyto instrukcji if-else, aby zapobiec zastąpieniu istniejącego pliku.
Poprzez następujące zmiany w przykładzie, można określić różne wyniki oparte na tym, czy plik o określonej nazwie już istnieje.Jeśli taki plik nie istnieje, kod tworzy go.Jeśli taki plik istnieje, kod dołącza dane do tego pliku.
Określ nielosową nazwę pliku.
// Comment out the following line. //string fileName = System.IO.Path.GetRandomFileName(); // Replace that line with the following assignment. string fileName = "MyNewFile.txt";
Zastąp instrukcję if-else instrukcją using w następującym kodzie.
using (System.IO.FileStream fs = new System.IO.FileStream(pathString, FileMode.Append)) { for (byte i = 0; i < 100; i++) { fs.WriteByte(i); } }
Uruchom przykład kilka razy, aby sprawdzić, czy dane są dodawane do pliku za każdym razem.
Aby poznać więcej wartości wyliczenia FileMode, które można wypróbować, zobacz FileMode.
Następujące warunki mogą spowodować wyjątek:
Nazwa folderu została nieprawidłowo sformułowana.Na przykład zawiera niedozwolone znaki lub jest tylko spacją (klasa ArgumentException).Użyj klasy Path, aby utworzyć prawidłowe ścieżki nazw.
Folderem nadrzędnym folderu, który ma zostać utworzony tylko do odczytu (klasa IOException).
Nazwą folderu jest null (klasa ArgumentNullException).
Nazwa folderu jest zbyt długa (klasa PathTooLongException).
Nazwą folderu jest tylko dwukropek, ":" (klasa PathTooLongException).
Zabezpieczenia
Wystąpienie klasy SecurityException może zostać wygenerowane w sytuacjach częściowego zaufania.
Jeśli nie masz uprawnienia do utworzenia folderu, przykład generuje wystąpienie klasy UnauthorizedAccessException.
Zobacz też
Informacje
Koncepcje
Przewodnik programowania w języku C#
Inne zasoby
System plików i rejestr (Przewodnik programowania w języku C#)