다음을 통해 공유


FileInfo 클래스

정의

파일 만들기, 복사, 삭제, 이동 및 열기를 위한 속성 및 인스턴스 메서드를 제공하고 FileStream 개체를 만드는 데 도움이 됩니다. 이 클래스는 상속할 수 없습니다.

public ref class FileInfo sealed : System::IO::FileSystemInfo
public sealed class FileInfo : System.IO.FileSystemInfo
[System.Serializable]
public sealed class FileInfo : System.IO.FileSystemInfo
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class FileInfo : System.IO.FileSystemInfo
type FileInfo = class
    inherit FileSystemInfo
[<System.Serializable>]
type FileInfo = class
    inherit FileSystemInfo
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type FileInfo = class
    inherit FileSystemInfo
Public NotInheritable Class FileInfo
Inherits FileSystemInfo
상속
상속
특성

예제

다음 예제에서는 FileInfo 클래스의 주요 멤버 중 일부를 보여 줍니다.

속성을 처음 검색하면 FileInfoRefresh 메서드를 호출하고 파일에 대한 정보를 캐시합니다. 후속 호출에서 Refresh 호출하여 정보의 최신 복사본을 가져와야 합니다.

using namespace System;
using namespace System::IO;

int main()
{
   String^ path = Path::GetTempFileName();
   FileInfo^ fi1 = gcnew FileInfo( path );
   //Create a file to write to.
   StreamWriter^ sw = fi1->CreateText();
   try
   {
     sw->WriteLine( "Hello" );
     sw->WriteLine( "And" );
     sw->WriteLine( "Welcome" );
   }
   finally
   {
     if ( sw )
        delete (IDisposable^)sw;
   }

   //Open the file to read from.
   StreamReader^ sr = fi1->OpenText();
   try
   {
      String^ s = "";
      while ( s = sr->ReadLine() )
      {
         Console::WriteLine( s );
      }
   }
   finally
   {
      if ( sr )
         delete (IDisposable^)sr;
   }

   try
   {
      String^ path2 = Path::GetTempFileName();
      FileInfo^ fi2 = gcnew FileInfo( path2 );

      //Ensure that the target does not exist.
      fi2->Delete();

      //Copy the file.
      fi1->CopyTo( path2 );
      Console::WriteLine( "{0} was copied to {1}.", path, path2 );

      //Delete the newly created file.
      fi2->Delete();
      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 = Path.GetTempFileName();
        var fi1 = new FileInfo(path);

        // Create a file to write to.
        using (StreamWriter sw = fi1.CreateText())
        {
            sw.WriteLine("Hello");
            sw.WriteLine("And");
            sw.WriteLine("Welcome");
        }	

        // Open the file to read from.
        using (StreamReader sr = fi1.OpenText())
        {
            var s = "";
            while ((s = sr.ReadLine()) != null)
            {
                Console.WriteLine(s);
            }
        }

        try
        {
            string path2 = Path.GetTempFileName();
            var fi2 = new FileInfo(path2);

            // Ensure that the target does not exist.
            fi2.Delete();

            // Copy the file.
            fi1.CopyTo(path2);
            Console.WriteLine($"{path} was copied to {path2}.");

            // Delete the newly created file.
            fi2.Delete();
            Console.WriteLine($"{path2} was successfully deleted.");
        }
        catch (Exception e)
        {
            Console.WriteLine($"The process failed: {e.ToString()}");
        }
    }
}
Imports System.IO

Public Class Test

    Public Shared Sub Main()
        Dim path1 As String = Path.GetTempFileName()
        Dim path2 As String = Path.GetTempFileName()
        Dim fi As New FileInfo(path1)

        ' Create a file to write to.
        Using sw As StreamWriter = fi.CreateText()
            sw.WriteLine("Hello")
            sw.WriteLine("And")
            sw.WriteLine("Welcome")
        End Using

        Try
            ' Open the file to read from.
            Using sr As StreamReader = fi.OpenText()
                Do While sr.Peek() >= 0
                    Console.WriteLine(sr.ReadLine())
                Loop
            End Using

            Dim fi2 As New FileInfo(path2)

            ' Ensure that the target does not exist.
            fi2.Delete()

            ' Copy the file.
            fi.CopyTo(path2)
            Console.WriteLine($"{path1} was copied to {path2}.")

            ' Delete the newly created file.
            fi2.Delete()
            Console.WriteLine($"{path2} was successfully deleted.")

        Catch e As Exception
            Console.WriteLine($"The process failed: {e.ToString()}.")
        End Try
    End Sub
End Class

이 예제에서는 다음과 유사한 출력을 생성합니다.

Hello
And
Welcome
C:\Users\userName\AppData\Local\Temp\tmp70AB.tmp was copied to C:\Users\userName\AppData\Local\Temp\tmp70CB.tmp.
C:\Users\userName\AppData\Local\Temp\tmp70CB.tmp was successfully deleted.

설명

파일 복사, 이동, 이름 바꾸기, 만들기, 열기, 삭제 및 추가와 같은 일반적인 작업에는 FileInfo 클래스를 사용합니다.

동일한 파일에서 여러 작업을 수행하는 경우 보안 검사가 항상 필요한 것은 아니므로 File 클래스의 해당 정적 메서드 대신 FileInfo 인스턴스 메서드를 사용하는 것이 더 효율적일 수 있습니다.

대부분의 FileInfo 메서드는 파일을 만들거나 열 때 다른 I/O 형식을 반환합니다. 이러한 다른 형식을 사용하여 파일을 추가로 조작할 수 있습니다. 자세한 내용은 Open, OpenRead, OpenText, CreateText또는 Create같은 특정 FileInfo 멤버를 참조하세요.

기본적으로 새 파일에 대한 전체 읽기/쓰기 액세스 권한이 모든 사용자에게 부여됩니다.

다음 표에서는 다양한 FileInfo 메서드의 동작을 사용자 지정하는 데 사용되는 열거형에 대해 설명합니다.

열거형 묘사
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"

FileInfo 클래스는 파일에 대한 정보를 검색할 수 있는 다음 속성을 제공합니다. 각 속성을 사용하는 방법에 대한 예제는 속성 페이지를 참조하세요.

  • Directory 속성은 파일의 부모 디렉터리를 나타내는 개체를 검색합니다.

  • DirectoryName 속성은 파일의 부모 디렉터리의 전체 경로를 검색합니다.

  • Exists 속성은 파일에서 작동하기 전에 파일이 있는지 확인합니다.

  • IsReadOnly 속성은 파일을 수정할 수 있는지 여부를 지정하는 값을 검색하거나 설정합니다.

  • Length 파일의 크기를 검색합니다.

  • Name 파일의 이름을 검색합니다.

생성자

FileInfo(String)

파일 경로에 대한 래퍼 역할을 하는 FileInfo 클래스의 새 인스턴스를 초기화합니다.

필드

FullPath

디렉터리 또는 파일의 정규화된 경로를 나타냅니다.

(다음에서 상속됨 FileSystemInfo)
OriginalPath

상대 또는 절대 경로에 관계없이 사용자가 원래 지정한 경로입니다.

(다음에서 상속됨 FileSystemInfo)

속성

Attributes

현재 파일 또는 디렉터리의 특성을 가져오거나 설정합니다.

(다음에서 상속됨 FileSystemInfo)
CreationTime

현재 파일 또는 디렉터리의 생성 시간을 가져오거나 설정합니다.

(다음에서 상속됨 FileSystemInfo)
CreationTimeUtc

현재 파일 또는 디렉터리의 생성 시간을 UTC(협정 세계시)로 가져오거나 설정합니다.

(다음에서 상속됨 FileSystemInfo)
Directory

부모 디렉터리의 인스턴스를 가져옵니다.

DirectoryName

디렉터리의 전체 경로를 나타내는 문자열을 가져옵니다.

Exists

파일이 있는지 여부를 나타내는 값을 가져옵니다.

Extension

전체 파일 이름인 경우에도 선행 점 . 포함하여 파일 이름의 확장명 부분을 가져오거나 확장명 없는 경우 빈 문자열을 가져옵니다.

(다음에서 상속됨 FileSystemInfo)
FullName

디렉터리 또는 파일의 전체 경로를 가져옵니다.

(다음에서 상속됨 FileSystemInfo)
IsReadOnly

현재 파일이 읽기 전용인지 여부를 결정하는 값을 가져오거나 설정합니다.

LastAccessTime

현재 파일 또는 디렉터리에 마지막으로 액세스한 시간을 가져오거나 설정합니다.

(다음에서 상속됨 FileSystemInfo)
LastAccessTimeUtc

현재 파일 또는 디렉터리에 마지막으로 액세스한 시간(UTC)을 가져오거나 설정합니다.

(다음에서 상속됨 FileSystemInfo)
LastWriteTime

현재 파일 또는 디렉터리를 마지막으로 쓴 시간을 가져오거나 설정합니다.

(다음에서 상속됨 FileSystemInfo)
LastWriteTimeUtc

현재 파일 또는 디렉터리가 마지막으로 기록된 시간을 UTC(협정 세계시)로 가져오거나 설정합니다.

(다음에서 상속됨 FileSystemInfo)
Length

현재 파일의 크기(바이트)를 가져옵니다.

LinkTarget

FullName있는 링크의 대상 경로를 가져오거나 이 FileSystemInfo 인스턴스가 링크를 나타내지 않는 경우 null.

(다음에서 상속됨 FileSystemInfo)
Name

파일의 이름을 가져옵니다.

UnixFileMode

현재 파일 또는 디렉터리에 대한 Unix 파일 모드를 가져오거나 설정합니다.

(다음에서 상속됨 FileSystemInfo)

메서드

AppendText()

FileInfo인스턴스가 나타내는 파일에 텍스트를 추가하는 StreamWriter 만듭니다.

CopyTo(String)

기존 파일을 새 파일에 복사하여 기존 파일의 덮어쓰기를 허용하지 않습니다.

CopyTo(String, Boolean)

기존 파일을 새 파일에 복사하여 기존 파일을 덮어쓸 수 있습니다.

Create()

파일을 만듭니다.

CreateAsSymbolicLink(String)

지정된 pathToTarget가리키는 FullName 있는 기호 링크를 만듭니다.

(다음에서 상속됨 FileSystemInfo)
CreateObjRef(Type)

원격 개체와 통신하는 데 사용되는 프록시를 생성하는 데 필요한 모든 관련 정보를 포함하는 개체를 만듭니다.

(다음에서 상속됨 MarshalByRefObject)
CreateText()

새 텍스트 파일을 작성하는 StreamWriter 만듭니다.

Decrypt()

Encrypt() 메서드를 사용하여 현재 계정으로 암호화된 파일의 암호를 해독합니다.

Delete()

파일을 영구적으로 삭제합니다.

Encrypt()

파일을 암호화하는 데 사용되는 계정만 암호를 해독할 수 있도록 파일을 암호화합니다.

Equals(Object)

지정된 개체가 현재 개체와 같은지 여부를 확인합니다.

(다음에서 상속됨 Object)
GetAccessControl()

현재 FileInfo 개체에서 설명하는 파일에 대한 ACL(액세스 제어 목록) 항목을 캡슐화하는 FileSecurity 개체를 가져옵니다.

GetAccessControl(AccessControlSections)

현재 FileInfo 개체에서 설명하는 파일에 대해 지정된 형식의 ACL(액세스 제어 목록) 항목을 캡슐화하는 FileSecurity 개체를 가져옵니다.

GetHashCode()

기본 해시 함수로 사용됩니다.

(다음에서 상속됨 Object)
GetLifetimeService()
사용되지 않음.

이 인스턴스의 수명 정책을 제어하는 현재 수명 서비스 개체를 검색합니다.

(다음에서 상속됨 MarshalByRefObject)
GetObjectData(SerializationInfo, StreamingContext)
사용되지 않음.

파일 이름 및 추가 예외 정보를 사용하여 SerializationInfo 개체를 설정합니다.

(다음에서 상속됨 FileSystemInfo)
GetType()

현재 인스턴스의 Type 가져옵니다.

(다음에서 상속됨 Object)
InitializeLifetimeService()
사용되지 않음.

이 인스턴스의 수명 정책을 제어하는 수명 서비스 개체를 가져옵니다.

(다음에서 상속됨 MarshalByRefObject)
MemberwiseClone()

현재 Object단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
MemberwiseClone(Boolean)

현재 MarshalByRefObject 개체의 단순 복사본을 만듭니다.

(다음에서 상속됨 MarshalByRefObject)
MoveTo(String)

지정된 파일을 새 위치로 이동하여 새 파일 이름을 지정하는 옵션을 제공합니다.

MoveTo(String, Boolean)

지정된 파일을 새 위치로 이동하여 새 파일 이름을 지정하고 대상 파일이 이미 있는 경우 덮어쓰는 옵션을 제공합니다.

Open(FileMode)

지정된 모드에서 파일을 엽니다.

Open(FileMode, FileAccess)

읽기, 쓰기 또는 읽기/쓰기 권한이 있는 지정된 모드에서 파일을 엽니다.

Open(FileMode, FileAccess, FileShare)

읽기, 쓰기 또는 읽기/쓰기 액세스 권한과 지정된 공유 옵션을 사용하여 지정된 모드에서 파일을 엽니다.

Open(FileStreamOptions)

지정된 생성 모드, 읽기/쓰기 및 공유 권한, 다른 FileStreams에 대한 액세스 권한, 버퍼 크기, 추가 파일 옵션 및 할당 크기를 사용하여 FileStream 클래스의 새 인스턴스를 초기화합니다.

OpenRead()

읽기 전용 FileStream만듭니다.

OpenText()

기존 텍스트 파일에서 읽는 UTF8 인코딩을 사용하여 StreamReader 만듭니다.

OpenWrite()

쓰기 전용 FileStream만듭니다.

Refresh()

개체의 상태를 새로 고칩니다.

(다음에서 상속됨 FileSystemInfo)
Replace(String, String)

지정된 파일의 내용을 현재 FileInfo 개체에서 설명하는 파일로 바꾸고 원래 파일을 삭제하고 대체된 파일의 백업을 만듭니다.

Replace(String, String, Boolean)

지정된 파일의 내용을 현재 FileInfo 개체에서 설명하는 파일로 바꾸고, 원래 파일을 삭제하고, 대체된 파일의 백업을 만듭니다. 병합 오류를 무시할지 여부도 지정합니다.

ResolveLinkTarget(Boolean)

지정된 링크의 대상을 가져옵니다.

(다음에서 상속됨 FileSystemInfo)
SetAccessControl(FileSecurity)

FileSecurity 개체에서 설명하는 ACL(액세스 제어 목록) 항목을 현재 FileInfo 개체에서 설명하는 파일에 적용합니다.

ToString()

FileInfo 생성자에 전달된 원래 경로를 반환합니다. 전체 경로 또는 파일 이름에 FullName 또는 Name 속성을 사용합니다.

ToString()

원래 경로를 반환합니다. 전체 경로 또는 파일/디렉터리 이름에 FullName 또는 Name 속성을 사용합니다.

(다음에서 상속됨 FileSystemInfo)

확장 메서드

Create(FileInfo, FileMode, FileSystemRights, FileShare, Int32, FileOptions, FileSecurity)

지정된 속성 및 보안 설정을 사용하여 새 파일 스트림을 만듭니다.

GetAccessControl(FileInfo)

파일의 보안 정보를 반환합니다.

GetAccessControl(FileInfo, AccessControlSections)

파일의 보안 정보를 반환합니다.

SetAccessControl(FileInfo, FileSecurity)

기존 파일의 보안 특성을 변경합니다.

적용 대상

추가 정보