File 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供靜態方法來建立、複製、刪除、移動和開啟單一檔案,並協助建立 FileStream 物件。
public ref class File abstract sealed
public ref class File sealed
public static class File
public sealed class File
[System.Runtime.InteropServices.ComVisible(true)]
public static class File
type File = class
[<System.Runtime.InteropServices.ComVisible(true)>]
type File = class
Public Class File
Public NotInheritable Class File
- 繼承
-
File
- 屬性
範例
下列範例示範如何使用 File 類別來檢查檔案是否存在,並根據結果,建立新的檔案並寫入檔案,或開啟現有的檔案並從中讀取。 在執行程式代碼之前,請先建立 c:\temp
資料夾。
using namespace System;
using namespace System::IO;
int main()
{
String^ path = "c:\\temp\\MyTest.txt";
if ( !File::Exists( path ) )
{
// Create a file to write to.
StreamWriter^ sw = File::CreateText( path );
try
{
sw->WriteLine( "Hello" );
sw->WriteLine( "And" );
sw->WriteLine( "Welcome" );
}
finally
{
if ( sw )
delete (IDisposable^)(sw);
}
}
// Open the file to read from.
StreamReader^ sr = File::OpenText( path );
try
{
String^ s = "";
while ( s = sr->ReadLine() )
{
Console::WriteLine( s );
}
}
finally
{
if ( sr )
delete (IDisposable^)(sr);
}
try
{
String^ path2 = String::Concat( path, "temp" );
// Ensure that the target does not exist.
File::Delete( path2 );
// Copy the file.
File::Copy( path, path2 );
Console::WriteLine( "{0} was copied to {1}.", path, path2 );
// Delete the newly created file.
File::Delete( path2 );
Console::WriteLine( "{0} was successfully deleted.", path2 );
}
catch ( Exception^ e )
{
Console::WriteLine( "The process failed: {0}", e );
}
}
using System;
using System.IO;
class Test
{
public static void Main()
{
string path = @"c:\temp\MyTest.txt";
if (!File.Exists(path))
{
// Create a file to write to.
using (StreamWriter sw = File.CreateText(path))
{
sw.WriteLine("Hello");
sw.WriteLine("And");
sw.WriteLine("Welcome");
}
}
// Open the file to read from.
using (StreamReader sr = File.OpenText(path))
{
string s;
while ((s = sr.ReadLine()) != null)
{
Console.WriteLine(s);
}
}
}
}
open System.IO
let path = @"c:\temp\MyTest.txt"
if File.Exists path |> not then
// Create a file to write to.
use sw = File.CreateText path
sw.WriteLine "Hello"
sw.WriteLine "And"
sw.WriteLine "Welcome"
// Open the file to read from.
do
use sr = File.OpenText path
let mutable s = sr.ReadLine()
while isNull s |> not do
printfn $"{s}"
s <- sr.ReadLine()
Imports System.IO
Public Class Test
Public Shared Sub Main()
Dim path As String = "c:\temp\MyTest.txt"
If File.Exists(path) = False Then
' Create a file to write to.
Using sw As StreamWriter = File.CreateText(path)
sw.WriteLine("Hello")
sw.WriteLine("And")
sw.WriteLine("Welcome")
End Using
End If
' Open the file to read from.
Using sr As StreamReader = File.OpenText(path)
Do While sr.Peek() >= 0
Console.WriteLine(sr.ReadLine())
Loop
End Using
End Sub
End Class
備註
針對一般作業使用 File 類別,例如一次複製、移動、重新命名、建立、開啟、刪除和附加至單一檔案。 您也可以使用 File 類別來取得和設定檔案屬性,或 DateTime 與建立、存取和寫入檔案相關的資訊。 如果您要對多個檔案執行作業,請參閱 Directory.GetFiles 或 DirectoryInfo.GetFiles。
當您建立或開啟檔案時,許多 File 方法都會傳回其他 I/O 類型。 您可以使用這些其他類型的來進一步操作檔案。 如需詳細資訊,請參閱特定 File 成員,例如 OpenText、CreateText或 Create。
因為所有 File 方法都是靜態的,所以如果您想要只執行一個動作,則使用 File 方法比對應的 FileInfo 實例方法更有效率。 所有 File 方法都需要您要操作之檔案的路徑。
File 類別的靜態方法會對所有方法執行安全性檢查。 如果您要重複使用物件數次,請考慮改用對應的實例方法 FileInfo,因為安全性檢查不一定是必要的。
根據預設,對新檔案的完整讀取/寫入存取權會授與所有使用者。
下表描述用來自定義各種 File 方法行為的列舉。
列舉 | 描述 |
---|---|
FileAccess | 指定檔案的讀取和寫入存取權。 |
FileShare | 指定已使用之檔案允許的存取層級。 |
FileMode | 指定是否保留或覆寫現有檔案的內容,以及建立現有檔案的要求是否造成例外狀況。 |
注意
在接受路徑做為輸入字串的成員中,該路徑的格式必須良好或引發例外狀況。 例如,如果路徑為完整,但開頭為空格,則路徑不會在 類別的方法中修剪。 因此,路徑的格式不正確,而且會引發例外狀況。 同樣地,路徑或路徑的組合不能完全限定兩次。 例如,在大部分情況下,“c:\temp c:\windows” 也會引發例外狀況。 使用接受路徑字串的方法時,請確定您的路徑格式良好。
在接受路徑的成員中,路徑可以參考檔案或只參考目錄。 指定的路徑也可以參考伺服器和共享名稱的相對路徑或通用命名慣例 (UNC) 路徑。 例如,下列所有都是可接受的路徑:
- 在 C# 中
"c:\\\MyDir\\\MyFile.txt"
,或在 Visual Basic 中"c:\MyDir\MyFile.txt"
。 - 在 C# 中
"c:\\\MyDir"
,或在 Visual Basic 中"c:\MyDir"
。 - 在 C# 中
"MyDir\\\MySubdir"
,或在 Visual Basic 中"MyDir\MySubDir"
。 - 在 C# 中
"\\\\\\\MyServer\\\MyShare"
,或在 Visual Basic 中"\\\MyServer\MyShare"
。
如需一般 I/O 工作的清單,請參閱 一般 I/O 工作。