創建文件或文件夾
您可通過編程方式在您的計算機上創建文件夾、子文件夾和子文件夾中的文件,並將數據寫入文件。
? 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 54public
class
CreateFileOrFolder
{
static
void
Main()
{
string
folderName =
@"c:\Top-Level Folder"
;
string
pathString = System.IO.Path.Combine(folderName,
"SubFolder"
);
string
pathString2 =
@"c:\Top-Level Folder\SubFolder2"
;
System.IO.Directory.CreateDirectory(pathString);
string
fileName = System.IO.Path.GetRandomFileName();
pathString = System.IO.Path.Combine(pathString, fileName);
Console.WriteLine(
"Path to my file: {0}\n"
, pathString);
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
;
}
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);
}
System.Console.WriteLine(
"Press any key to exit."
);
System.Console.ReadKey();
}
}
輸出:
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 不執行任何操作,且不會引發異常。但是,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"
;
用以下代碼中的 using 語句替換 if-else 語句。
? 1 2 3 4 5 6 7using
(System.IO.FileStream fs =
new
System.IO.FileStream(pathString, FileMode.Append))
{
for
(
byte
i = 0; i < 100; i++)
{
fs.WriteByte(i);
}
}
運行該示例若干次以驗證數據是否每次都添加到文件中。
復制、刪除和移動文件和文件夾
以下示例說明如何使用 System.IO 命名空間中的 System.IO.File、System.IO.Directory、System.IO.FileInfo 和 System.IO.DirectoryInfo 類以同步方式復制、移動和刪除文件和文件夾。 這些示例沒有提供進度欄或其他任何用戶界面。
。
示例
下面的示例演示如何復制文件和目錄。
public
class
SimpleFileCopy
{
static
void
Main()
{
string
fileName =
"test.txt"
;
string
sourcePath =
@"C:\Users\Public\TestFolder"
;
string
targetPath =
@"C:\Users\Public\TestFolder\SubDir"
;
// Use Path class to manipulate file and directory paths.
string
sourceFile = System.IO.Path.Combine(sourcePath, fileName);
string
destFile = System.IO.Path.Combine(targetPath, fileName);
// To copy a folder's contents to a new location:
// Create a new target folder, if necessary.
if
(!System.IO.Directory.Exists(targetPath))
{
System.IO.Directory.CreateDirectory(targetPath);
}
// To copy a file to another location and
// overwrite the destination file if it already exists.
System.IO.File.Copy(sourceFile, destFile,
true
);
// To copy all the files in one directory to another directory.
// Get the files in the source folder. (To recursively iterate through
// all subfolders under the current directory, see
// "How to: Iterate Through a Directory Tree.")
// Note: Check for target path was performed previously
// in this code example.
if
(System.IO.Directory.Exists(sourcePath))
{
string
[] files = System.IO.Directory.GetFiles(sourcePath);
// Copy the files and overwrite destination files if they already exist.
foreach
(
string
s
in
files)
{
// Use static Path methods to extract only the file name from the path.
fileName = System.IO.Path.GetFileName(s);
destFile = System.IO.Path.Combine(targetPath, fileName);
System.IO.File.Copy(s, destFile,
true
);
}
}
else
{
Console.WriteLine(
"Source path does not exist!"
);
}
// Keep console window open in debug mode.
Console.WriteLine(
"Press any key to exit."
);
Console.ReadKey();
}
}
下面的示例演示如何移動文件和目錄。
public
class
SimpleFileMove
{
static
void
Main()
{
string
sourceFile =
@"C:\Users\Public\public\test.txt"
;
string
destinationFile =
@"C:\Users\Public\private\test.txt"
;
// To move a file or folder to a new location:
System.IO.File.Move(sourceFile, destinationFile);
// To move an entire directory. To programmatically modify or combine
// path strings, use the System.IO.Path class.
System.IO.Directory.Move(
@"C:\Users\Public\public\test\"
,
@"C:\Users\Public\private"
);
}
}
下面的示例演示如何刪除文件和目錄。
public
class
SimpleFileDelete
{
static
void
Main()
{
// Delete a file by using File class static method...
if
(System.IO.File.Exists(
@"C:\Users\Public\DeleteTest\test.txt"
))
{
// Use a try block to catch IOExceptions, to
// handle the case of the file already being
// opened by another process.
try
{
System.IO.File.Delete(
@"C:\Users\Public\DeleteTest\test.txt"
);
}
catch
(System.IO.IOException e)
{
Console.WriteLine(e.Message);
return
;
}
}
// ...or by using FileInfo instance method.
System.IO.FileInfo fi =
new
System.IO.FileInfo(
@"C:\Users\Public\DeleteTest\test2.txt"
);
try
{
fi.Delete();
}
catch
(System.IO.IOException e)
{
Console.WriteLine(e.Message);
}
// Delete a directory. Must be writable or empty.
try
{
System.IO.Directory.Delete(
@"C:\Users\Public\DeleteTest"
);
}
catch
(System.IO.IOException e)
{
Console.WriteLine(e.Message);
}
// Delete a directory and all subdirectorIEs with Directory static method...
if
(System.IO.Directory.Exists(
@"C:\Users\Public\DeleteTest"
))
{
try
{
System.IO.Directory.Delete(
@"C:\Users\Public\DeleteTest"
,
true
);
}
catch
(System.IO.IOException e)
{
Console.WriteLine(e.Message);
}
}
// ...or with DirectoryInfo instance method.
System.IO.DirectoryInfo di =
new
System.IO.DirectoryInfo(
@"C:\Users\Public\public"
);
// Delete this dir and all subdirs.
try
{
di.Delete(
true
);
}
catch
(System.IO.IOException e)
{
Console.WriteLine(e.Message);
}
}
}