Directory.EnumerateFiles Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mengembalikan kumpulan nama file lengkap yang dapat dijumlahkan yang memenuhi kriteria yang ditentukan.
Overload
EnumerateFiles(String, String, SearchOption) |
Mengembalikan kumpulan nama file lengkap yang dapat dijumlahkan yang cocok dengan pola pencarian di jalur tertentu, dan secara opsional mencari subdirektori. |
EnumerateFiles(String, String, EnumerationOptions) |
Mengembalikan kumpulan nama file lengkap yang dapat dijumlahkan yang cocok dengan pola pencarian dan opsi enumerasi dalam jalur tertentu, dan secara opsional mencari subdirektori. |
EnumerateFiles(String) |
Mengembalikan kumpulan nama file lengkap yang dapat dijumlahkan dalam jalur tertentu. |
EnumerateFiles(String, String) |
Mengembalikan kumpulan nama file lengkap yang dapat dijumlahkan yang cocok dengan pola pencarian dalam jalur tertentu. |
EnumerateFiles(String, String, SearchOption)
- Sumber:
- Directory.cs
- Sumber:
- Directory.cs
- Sumber:
- Directory.cs
Mengembalikan kumpulan nama file lengkap yang dapat dijumlahkan yang cocok dengan pola pencarian di jalur tertentu, dan secara opsional mencari subdirektori.
public:
static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path, System::String ^ searchPattern, System::IO::SearchOption searchOption);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern, System.IO.SearchOption searchOption);
static member EnumerateFiles : string * string * System.IO.SearchOption -> seq<string>
Public Shared Function EnumerateFiles (path As String, searchPattern As String, searchOption As SearchOption) As IEnumerable(Of String)
Parameter
- path
- String
Jalur relatif atau absolut ke direktori untuk dicari. String ini tidak peka huruf besar/kecil.
- searchPattern
- String
String pencarian yang cocok dengan nama file di path
. Parameter ini dapat berisi kombinasi jalur harfiah yang valid dan karakter kartubebas (* dan ?), tetapi tidak mendukung ekspresi reguler.
- searchOption
- SearchOption
Salah satu nilai enumerasi yang menentukan apakah operasi pencarian hanya boleh menyertakan direktori saat ini atau harus menyertakan semua subdirektori. Nilai defaultnya adalah TopDirectoryOnly.
Mengembalikan
Kumpulan nama lengkap yang dapat dijumlahkan (termasuk jalur) untuk file dalam direktori yang ditentukan oleh dan yang cocok dengan path
pola pencarian dan opsi pencarian yang ditentukan.
Pengecualian
versi .NET Framework dan .NET Core yang lebih lama dari 2.1: path
adalah string panjang nol, hanya berisi spasi kosong, atau berisi karakter yang tidak valid. Anda dapat mengkueri karakter yang tidak valid dengan menggunakan GetInvalidPathChars() metode .
-atau-
searchPattern
tidak berisi pola yang valid.
searchOption
bukan nilai yang valid SearchOption .
path
tidak valid, seperti mengacu pada drive yang tidak dipetakan.
path
adalah nama file.
Jalur yang ditentukan, nama file, atau gabungan melebihi panjang maksimum yang ditentukan sistem.
Pemanggil tidak memiliki izin yang diperlukan.
Pemanggil tidak memiliki izin yang diperlukan.
Contoh
Contoh berikut menunjukkan cara mengambil semua file teks dalam direktori dan subdirektorinya, dan memindahkannya ke direktori baru. Setelah file dipindahkan, file tersebut tidak lagi ada di direktori asli.
using System;
using System.IO;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
string sourceDirectory = @"C:\current";
string archiveDirectory = @"C:\archive";
try
{
var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories);
foreach (string currentFile in txtFiles)
{
string fileName = currentFile.Substring(sourceDirectory.Length + 1);
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
}
open System.IO
let sourceDirectory = @"C:\current"
let archiveDirectory = @"C:\archive"
try
let txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories)
for currentFile in txtFiles do
let fileName = currentFile.Substring(sourceDirectory.Length + 1)
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
with e ->
printfn $"{e.Message}"
Imports System.IO
Module Module1
Sub Main()
Dim sourceDirectory As String = "C:\current"
Dim archiveDirectory As String = "C:\archive"
Try
Dim txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories)
For Each currentFile As String In txtFiles
Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
Next
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
End Module
Contoh berikut secara rekursif menghitung semua file yang memiliki ekstensi .txt
, membaca setiap baris file, dan menampilkan baris jika berisi string "Microsoft".
using System;
using System.IO;
using System.Linq;
class Program
{
static void Main(string[] args)
{
try
{
// Set a variable to the My Documents path.
string docPath =
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var files = from file in Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories)
from line in File.ReadLines(file)
where line.Contains("Microsoft")
select new
{
File = file,
Line = line
};
foreach (var f in files)
{
Console.WriteLine($"{f.File}\t{f.Line}");
}
Console.WriteLine($"{files.Count().ToString()} files found.");
}
catch (UnauthorizedAccessException uAEx)
{
Console.WriteLine(uAEx.Message);
}
catch (PathTooLongException pathEx)
{
Console.WriteLine(pathEx.Message);
}
}
}
open System
open System.IO
try
// Set a variable to the My Documents path.
let docPath =
Environment.GetFolderPath Environment.SpecialFolder.MyDocuments
let files =
query {
for file in Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories) do
for line in File.ReadLines file do
where (line.Contains "Microsoft")
select {| File = file; Line = line |}
}
for f in files do
printfn $"{f.File}\t{f.Line}"
printfn $"{Seq.length files} files found."
with
| :? UnauthorizedAccessException as uAEx -> printfn $"{uAEx.Message}"
| :? PathTooLongException as pathEx -> printfn $"{pathEx.Message}"
Imports System.IO
Imports System.Xml.Linq
Module Module1
Sub Main()
Try
Dim docPath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
Dim files = From chkFile In Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories)
From line In File.ReadLines(chkFile)
Where line.Contains("Microsoft")
Select New With {.curFile = chkFile, .curLine = line}
For Each f In files
Console.WriteLine($"{f.File}\t{f.Line}")
Next
Console.WriteLine($"{files.Count} files found.")
Catch uAEx As UnauthorizedAccessException
Console.WriteLine(uAEx.Message)
Catch pathEx As PathTooLongException
Console.WriteLine(pathEx.Message)
End Try
End Sub
End Module
Keterangan
searchPattern
dapat berupa kombinasi karakter harfiah dan kartubebas, tetapi tidak mendukung ekspresi reguler. Penentu kartubebas berikut diizinkan di searchPattern
.
Penentu kartubebas | Cocok |
---|---|
* (tanda bintang) | Nol karakter atau lebih dalam posisi tersebut. |
? (tanda tanya) | Tepat satu karakter dalam posisi itu. |
Karakter selain kartubebas adalah karakter harfiah. Misalnya, searchPattern
string "*t" mencari semua nama yang path
diakhir dengan huruf "t". String searchPattern
"s*" mencari semua nama di path
awal dengan huruf "s".
Catatan
hanya .NET Framework: Saat Anda menggunakan karakter kartubebas tanda bintang di searchPattern
dan Anda menentukan ekstensi file tiga karakter, misalnya, "*.txt", metode ini juga mengembalikan file dengan ekstensi yang dimulai dengan ekstensi yang ditentukan. Misalnya, pola pencarian "*.xls" mengembalikan "book.xls" dan "book.xlsx". Perilaku ini hanya terjadi jika tanda bintang digunakan dalam pola pencarian dan ekstensi file yang disediakan tepat tiga karakter. Jika Anda menggunakan karakter kartubebas tanda tanya di suatu tempat dalam pola pencarian, metode ini hanya mengembalikan file yang sama persis dengan ekstensi file yang ditentukan. Tabel berikut menggambarkan anomali ini dalam .NET Framework.
File dalam direktori | Pola pencarian | .NET 5+ mengembalikan | .NET Framework mengembalikan |
---|---|---|---|
file.ai, file.aif | *.Ai | file.ai | file.ai |
book.xls, book.xlsx | *.xls | book.xls | book.xls, book.xlsx |
ello.txt, hello.txt, hello.txtt | ?ello.txt | hello.txt | hello.txt |
searchPattern
tidak dapat berakhir dalam dua periode ("..") atau berisi dua titik ("..") diikuti oleh DirectorySeparatorChar atau AltDirectorySeparatorChar, juga tidak boleh berisi karakter yang tidak valid. Anda dapat mengkueri karakter yang tidak valid dengan menggunakan GetInvalidPathChars metode .
Anda dapat menentukan informasi jalur relatif dengan path
parameter . Informasi jalur relatif ditafsirkan relatif terhadap direktori kerja saat ini, yang dapat Anda tentukan dengan menggunakan metode .GetCurrentDirectory
Metode EnumerateFiles dan GetFiles berbeda sebagai berikut: Ketika Anda menggunakan EnumerateFiles, Anda dapat mulai menghitung koleksi nama sebelum seluruh koleksi dikembalikan. Saat Anda menggunakan GetFiles, Anda harus menunggu seluruh array nama dikembalikan sebelum Anda dapat mengakses array. Oleh karena itu, ketika Anda bekerja dengan banyak file dan direktori, EnumerateFiles bisa lebih efisien.
Koleksi yang dikembalikan tidak di-cache. Setiap panggilan ke GetEnumerator pada koleksi memulai enumerasi baru.
Berlaku untuk
EnumerateFiles(String, String, EnumerationOptions)
- Sumber:
- Directory.cs
- Sumber:
- Directory.cs
- Sumber:
- Directory.cs
Mengembalikan kumpulan nama file lengkap yang dapat dijumlahkan yang cocok dengan pola pencarian dan opsi enumerasi dalam jalur tertentu, dan secara opsional mencari subdirektori.
public:
static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path, System::String ^ searchPattern, System::IO::EnumerationOptions ^ enumerationOptions);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern, System.IO.EnumerationOptions enumerationOptions);
static member EnumerateFiles : string * string * System.IO.EnumerationOptions -> seq<string>
Public Shared Function EnumerateFiles (path As String, searchPattern As String, enumerationOptions As EnumerationOptions) As IEnumerable(Of String)
Parameter
- path
- String
Jalur relatif atau absolut ke direktori untuk dicari. String ini tidak peka huruf besar/kecil.
- searchPattern
- String
String pencarian yang cocok dengan nama file di path
. Parameter ini dapat berisi kombinasi jalur harfiah yang valid dan karakter kartubebas (* dan ?), tetapi tidak mendukung ekspresi reguler.
- enumerationOptions
- EnumerationOptions
Objek yang menjelaskan konfigurasi pencarian dan enumerasi untuk digunakan.
Mengembalikan
Kumpulan nama lengkap yang dapat dijumlahkan (termasuk jalur) untuk file dalam direktori yang ditentukan oleh dan yang cocok dengan path
pola pencarian dan opsi enumerasi yang ditentukan.
Pengecualian
versi .NET Framework dan .NET Core yang lebih lama dari 2.1: path
adalah string panjang nol, hanya berisi spasi kosong, atau berisi karakter yang tidak valid. Anda dapat mengkueri karakter yang tidak valid dengan menggunakan GetInvalidPathChars() metode .
-atau-
searchPattern
tidak berisi pola yang valid.
searchOption
bukan nilai yang valid SearchOption .
path
tidak valid, seperti mengacu pada drive yang tidak dipetakan.
path
adalah nama file.
Jalur yang ditentukan, nama file, atau gabungan melebihi panjang maksimum yang ditentukan sistem.
Pemanggil tidak memiliki izin yang diperlukan.
Keterangan
searchPattern
dapat berupa kombinasi karakter harfiah dan kartubebas, tetapi tidak mendukung ekspresi reguler. Penentu kartubebas berikut diizinkan di searchPattern
.
Penentu kartubebas | Cocok |
---|---|
* (tanda bintang) | Nol karakter atau lebih dalam posisi tersebut. |
? (tanda tanya) | Tepat satu karakter dalam posisi itu. |
Karakter selain kartubebas adalah karakter harfiah. Misalnya, searchPattern
string "*t" mencari semua nama yang path
berakhiran dengan huruf "t". String searchPattern
"s*" mencari semua nama yang path
dimulai dengan huruf "s".
Catatan
hanya .NET Framework: Saat Anda menggunakan karakter kartubebas tanda bintang di searchPattern
dan Anda menentukan ekstensi file tiga karakter, misalnya, "*.txt", metode ini juga mengembalikan file dengan ekstensi yang dimulai dengan ekstensi yang ditentukan. Misalnya, pola pencarian "*.xls" mengembalikan "book.xls" dan "book.xlsx". Perilaku ini hanya terjadi jika tanda bintang digunakan dalam pola pencarian dan ekstensi file yang disediakan tepat tiga karakter. Jika Anda menggunakan karakter kartubebas tanda tanya di suatu tempat dalam pola pencarian, metode ini hanya mengembalikan file yang sama persis dengan ekstensi file yang ditentukan. Tabel berikut menggambarkan anomali ini dalam .NET Framework.
File dalam direktori | Pola pencarian | .NET 5+ mengembalikan | .NET Framework mengembalikan |
---|---|---|---|
file.ai, file.aif | *.Ai | file.ai | file.ai |
book.xls, book.xlsx | *.xls | book.xls | book.xls, book.xlsx |
ello.txt, hello.txt, hello.txtt | ?ello.txt | hello.txt | hello.txt |
searchPattern
tidak dapat berakhir dalam dua titik ("..") atau berisi dua titik ("..") diikuti oleh DirectorySeparatorChar atau AltDirectorySeparatorChar, juga tidak boleh berisi karakter yang tidak valid. Anda bisa mengkueri karakter yang tidak valid dengan menggunakan metode .GetInvalidPathChars
Anda dapat menentukan informasi jalur relatif dengan path
parameter . Informasi jalur relatif ditafsirkan relatif terhadap direktori kerja saat ini, yang dapat Anda tentukan dengan menggunakan GetCurrentDirectory metode .
Metode EnumerateFiles dan GetFiles berbeda sebagai berikut: Ketika Anda menggunakan EnumerateFiles, Anda dapat mulai menghitung koleksi nama sebelum seluruh koleksi dikembalikan. Saat Anda menggunakan GetFiles, Anda harus menunggu seluruh array nama dikembalikan sebelum Anda dapat mengakses array. Oleh karena itu, ketika Anda bekerja dengan banyak file dan direktori, EnumerateFiles bisa lebih efisien.
Koleksi yang dikembalikan tidak di-cache. Setiap panggilan ke GetEnumerator pada koleksi memulai enumerasi baru.
Berlaku untuk
EnumerateFiles(String)
- Sumber:
- Directory.cs
- Sumber:
- Directory.cs
- Sumber:
- Directory.cs
Mengembalikan kumpulan nama file lengkap yang dapat dijumlahkan dalam jalur tertentu.
public:
static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path);
static member EnumerateFiles : string -> seq<string>
Public Shared Function EnumerateFiles (path As String) As IEnumerable(Of String)
Parameter
- path
- String
Jalur relatif atau absolut ke direktori untuk dicari. String ini tidak peka huruf besar/kecil.
Mengembalikan
Kumpulan nama lengkap yang dapat dijumlahkan (termasuk jalur) untuk file dalam direktori yang ditentukan oleh path
.
Pengecualian
versi .NET Framework dan .NET Core yang lebih lama dari 2.1: path
adalah string panjang nol, hanya berisi spasi kosong, atau berisi karakter yang tidak valid. Anda bisa mengkueri karakter yang tidak valid dengan menggunakan metode .GetInvalidPathChars()
path
adalah null
.
path
tidak valid, seperti mengacu pada drive yang tidak dipetakan.
path
adalah nama file.
Jalur yang ditentukan, nama file, atau gabungan melebihi panjang maksimum yang ditentukan sistem.
Pemanggil tidak memiliki izin yang diperlukan.
Pemanggil tidak memiliki izin yang diperlukan.
Contoh
Contoh berikut menunjukkan cara mengambil semua file dalam direktori dan memindahkannya ke direktori baru. Setelah file dipindahkan, file tersebut tidak lagi ada di direktori asli.
using System;
using System.IO;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
string sourceDirectory = @"C:\current";
string archiveDirectory = @"C:\archive";
try
{
var txtFiles = Directory.EnumerateFiles(sourceDirectory);
foreach (string currentFile in txtFiles)
{
string fileName = currentFile.Substring(sourceDirectory.Length + 1);
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
}
open System.IO
let sourceDirectory = @"C:\current"
let archiveDirectory = @"C:\archive"
try
let txtFiles = Directory.EnumerateFiles sourceDirectory
for currentFile in txtFiles do
let fileName = currentFile.Substring(sourceDirectory.Length + 1)
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
with e ->
printfn $"{e.Message}"
Imports System.IO
Module Module1
Sub Main()
Dim sourceDirectory As String = "C:\current"
Dim archiveDirectory As String = "C:\archive"
Try
Dim txtFiles = Directory.EnumerateFiles(sourceDirectory)
For Each currentFile As String In txtFiles
Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
Next
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
End Module
Contoh berikut menghitung file dalam direktori yang ditentukan, membaca setiap baris file, dan menampilkan baris jika berisi string "Eropa".
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
class Program
{
static void Main(string[] args)
{
try
{
// LINQ query for all files containing the word 'Europe'.
var files = from file in
Directory.EnumerateFiles(@"\\archives1\library\")
where file.ToLower().Contains("europe")
select file;
foreach (var file in files)
{
Console.WriteLine("{0}", file);
}
Console.WriteLine("{0} files found.", files.Count<string>().ToString());
}
catch (UnauthorizedAccessException UAEx)
{
Console.WriteLine(UAEx.Message);
}
catch (PathTooLongException PathEx)
{
Console.WriteLine(PathEx.Message);
}
}
}
open System
open System.IO
try
// All files containing the word 'Europe'.
let files =
Directory.EnumerateFiles @"\\archives1\library\"
|> Seq.filter (fun file -> file.ToLower().Contains "europe")
for file in files do
printfn $"{file}"
printfn $"{Seq.length files} files found."
with
| :? UnauthorizedAccessException as uaEx ->
printfn $"{uaEx.Message}"
| :? PathTooLongException as pathEx ->
printfn $"{pathEx.Message}"
Imports System.IO
Imports System.Linq
Module Module1
Sub Main()
Try
' LINQ query for all files containing the word 'Europe'.
Dim files = From file In Directory.EnumerateFiles("\\archives1\library\")
Where file.ToLower().Contains("europe")
For Each file In files
Console.WriteLine("{0}", file)
Next
Console.WriteLine("{0} files found.", files.Count.ToString())
Catch UAEx As UnauthorizedAccessException
Console.WriteLine(UAEx.Message)
Catch PathEx As PathTooLongException
Console.WriteLine(PathEx.Message)
End Try
End Sub
End Module
Keterangan
Anda dapat menentukan informasi jalur relatif dengan path
parameter . Informasi jalur relatif ditafsirkan relatif terhadap direktori kerja saat ini, yang dapat Anda tentukan dengan menggunakan GetCurrentDirectory metode .
Metode EnumerateFiles dan GetFiles berbeda sebagai berikut: Ketika Anda menggunakan EnumerateFiles, Anda dapat mulai menghitung koleksi nama sebelum seluruh koleksi dikembalikan. Saat Anda menggunakan GetFiles, Anda harus menunggu seluruh array nama dikembalikan sebelum Anda dapat mengakses array. Oleh karena itu, ketika Anda bekerja dengan banyak file dan direktori, EnumerateFiles bisa lebih efisien.
Koleksi yang dikembalikan tidak di-cache; setiap panggilan ke GetEnumerator pada koleksi akan memulai enumerasi baru.
Berlaku untuk
EnumerateFiles(String, String)
- Sumber:
- Directory.cs
- Sumber:
- Directory.cs
- Sumber:
- Directory.cs
Mengembalikan kumpulan nama file lengkap yang dapat dijumlahkan yang cocok dengan pola pencarian dalam jalur tertentu.
public:
static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path, System::String ^ searchPattern);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern);
static member EnumerateFiles : string * string -> seq<string>
Public Shared Function EnumerateFiles (path As String, searchPattern As String) As IEnumerable(Of String)
Parameter
- path
- String
Jalur relatif atau absolut ke direktori untuk dicari. String ini tidak peka huruf besar/kecil.
- searchPattern
- String
String pencarian yang cocok dengan nama file di path
. Parameter ini dapat berisi kombinasi jalur harfiah yang valid dan karakter kartubebas (* dan ?), tetapi tidak mendukung ekspresi reguler.
Mengembalikan
Kumpulan nama lengkap yang dapat dijumlahkan (termasuk jalur) untuk file dalam direktori yang ditentukan oleh dan yang cocok dengan path
pola pencarian yang ditentukan.
Pengecualian
versi .NET Framework dan .NET Core yang lebih lama dari 2.1: path
adalah string panjang nol, hanya berisi spasi kosong, atau berisi karakter yang tidak valid. Anda bisa mengkueri karakter yang tidak valid dengan menggunakan metode .GetInvalidPathChars()
-atau-
searchPattern
tidak berisi pola yang valid.
path
tidak valid, seperti mengacu pada drive yang tidak dipetakan.
path
adalah nama file.
Jalur yang ditentukan, nama file, atau gabungan melebihi panjang maksimum yang ditentukan sistem.
Pemanggil tidak memiliki izin yang diperlukan.
Pemanggil tidak memiliki izin yang diperlukan.
Contoh
Contoh berikut menunjukkan cara mengambil semua file teks dalam direktori dan memindahkannya ke direktori baru. Setelah file dipindahkan, file tersebut tidak lagi ada di direktori asli.
using System;
using System.IO;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
string sourceDirectory = @"C:\current";
string archiveDirectory = @"C:\archive";
try
{
var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt");
foreach (string currentFile in txtFiles)
{
string fileName = currentFile.Substring(sourceDirectory.Length + 1);
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
}
open System.IO
let sourceDirectory = @"C:\current"
let archiveDirectory = @"C:\archive"
try
let txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt")
for currentFile in txtFiles do
let fileName = currentFile.Substring(sourceDirectory.Length + 1)
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
with e ->
printfn $"{e.Message}"
Imports System.IO
Module Module1
Sub Main()
Dim sourceDirectory As String = "C:\current"
Dim archiveDirectory As String = "C:\archive"
Try
Dim txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt")
For Each currentFile As String In txtFiles
Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
Next
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
End Module
Contoh berikut menghitung file dalam direktori yang ditentukan yang memiliki ekstensi ".txt", membaca setiap baris file, dan menampilkan baris jika berisi string "Eropa".
using System;
using System.Linq;
using System.IO;
class Program
{
static void Main(string[] args)
{
try
{
// LINQ query for all .txt files containing the word 'Europe'.
var files = from file in Directory.EnumerateFiles(@"\\archives1\library\", "*.txt")
where file.ToLower().Contains("europe")
select file;
foreach (var file in files)
{
Console.WriteLine("{0}", file);
}
Console.WriteLine("{0} files found.", files.Count<string>().ToString());
}
catch (UnauthorizedAccessException UAEx)
{
Console.WriteLine(UAEx.Message);
}
catch (PathTooLongException PathEx)
{
Console.WriteLine(PathEx.Message);
}
}
}
open System
open System.IO
try
// All .txt files containing the word 'Europe'.
let files =
Directory.EnumerateFiles(@"\\archives1\library\", "*.txt")
|> Seq.filter(fun file -> file.ToLower().Contains "europe")
for file in files do
printfn $"{file}"
printfn $"{Seq.length files} files found."
with
| :? UnauthorizedAccessException as uaEx ->
printfn $"{uaEx.Message}"
| :? PathTooLongException as pathEx ->
printfn $"{pathEx.Message}"
Imports System.IO
Imports System.Linq
Module Module1
Sub Main()
Try
' LINQ query for all .txt files containing the word 'Europe'.
Dim files = From file In Directory.EnumerateFiles("\\archives1\library\", "*.txt")
Where file.ToLower().Contains("europe")
For Each file In files
Console.WriteLine("{0}", file)
Next
Console.WriteLine("{0} files found.", files.Count.ToString())
Catch UAEx As UnauthorizedAccessException
Console.WriteLine(UAEx.Message)
Catch PathEx As PathTooLongException
Console.WriteLine(PathEx.Message)
End Try
End Sub
End Module
Keterangan
searchPattern
dapat menjadi kombinasi karakter literal dan kartubebas, tetapi tidak mendukung ekspresi reguler. Penentu kartubebas berikut diizinkan di searchPattern
.
Penentu kartubebas | Cocok |
---|---|
* (tanda bintang) | Nol atau lebih karakter dalam posisi tersebut. |
? (tanda tanya) | Tepat satu karakter dalam posisi itu. |
Karakter selain kartubebas adalah karakter harfiah. Misalnya, searchPattern
string "*t" mencari semua nama yang path
berakhiran dengan huruf "t". String searchPattern
"s*" mencari semua nama yang path
dimulai dengan huruf "s".
Catatan
hanya .NET Framework: Saat Anda menggunakan karakter kartubebas tanda bintang di searchPattern
dan Anda menentukan ekstensi file tiga karakter, misalnya, "*.txt", metode ini juga mengembalikan file dengan ekstensi yang dimulai dengan ekstensi yang ditentukan. Misalnya, pola pencarian "*.xls" mengembalikan "book.xls" dan "book.xlsx". Perilaku ini hanya terjadi jika tanda bintang digunakan dalam pola pencarian dan ekstensi file yang disediakan tepat tiga karakter. Jika Anda menggunakan karakter kartubebas tanda tanya di suatu tempat dalam pola pencarian, metode ini hanya mengembalikan file yang sama persis dengan ekstensi file yang ditentukan. Tabel berikut menggambarkan anomali ini dalam .NET Framework.
File dalam direktori | Pola pencarian | .NET 5+ mengembalikan | .NET Framework mengembalikan |
---|---|---|---|
file.ai, file.aif | *.Ai | file.ai | file.ai |
book.xls, book.xlsx | *.xls | book.xls | book.xls, book.xlsx |
ello.txt, hello.txt, hello.txtt | ?ello.txt | hello.txt | hello.txt |
searchPattern
tidak dapat berakhir dalam dua periode ("..") atau berisi dua titik ("..") diikuti oleh DirectorySeparatorChar atau AltDirectorySeparatorChar, juga tidak boleh berisi karakter yang tidak valid. Anda dapat mengkueri karakter yang tidak valid dengan menggunakan GetInvalidPathChars metode .
Anda dapat menentukan informasi jalur relatif dengan path
parameter . Informasi jalur relatif ditafsirkan relatif terhadap direktori kerja saat ini, yang dapat Anda tentukan dengan menggunakan metode .GetCurrentDirectory
Metode EnumerateFiles dan GetFiles berbeda sebagai berikut: Ketika Anda menggunakan EnumerateFiles, Anda dapat mulai menghitung koleksi nama sebelum seluruh koleksi dikembalikan; ketika Anda menggunakan GetFiles, Anda harus menunggu seluruh array nama dikembalikan sebelum Anda dapat mengakses array. Oleh karena itu, ketika Anda bekerja dengan banyak file dan direktori, EnumerateFiles bisa lebih efisien.
Koleksi yang dikembalikan tidak di-cache. Setiap panggilan ke GetEnumerator pada koleksi memulai enumerasi baru.