Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini memperlihatkan kepada Anda cara mengakses file dan folder menggunakan API .NET di aplikasi WinUI yang dikemas. Anda akan belajar membaca dan menulis file, mengelola direktori dan drive, dan bekerja dengan aliran memori untuk pengodean dan dekode string.
Aplikasi WinUI dapat menggunakan API .NET bersama API WinRT dan Win32 untuk menyediakan akses sistem file yang komprehensif. Contoh dalam artikel ini berfokus pada namespace System.IO , yang menyediakan fungsionalitas inti untuk operasi file dan direktori.
Prasyarat
- Visual Studio 2022 dengan beban kerja pengembangan aplikasi WinUI terinstal
- Proyek WinUI yang dikemas
- Pemahaman dasar tentang pengembangan C# dan .NET
Apa yang akan Anda pelajari
Dalam artikel ini, Anda akan mempelajari cara:
- Membaca dan menulis file menggunakan FileStream, BinaryWriter, dan BinaryReader
- Membuat, menghapus, dan mengelola direktori dengan kelas DirectoryInfo dan Directory
- Mengambil informasi drive menggunakan DriveInfo
- Mengodekan dan mendekode string dengan MemoryStream dan StreamReader
Membaca dan menulis file dengan API .NET
Dalam contoh berikut, ReadWriteFiles membuat file baru, menulis sekumpulan bilangan bulat ke file, lalu membaca bilangan bulat kembali dari file. Contohnya menggunakan kelas FileStream untuk membuat file baru dan membuka file untuk membaca atau menulis. Contoh menggunakan kelas BinaryWriter untuk menulis bilangan bulat ke file dan kelas BinaryReader untuk membaca bilangan bulat dari file.
using System.IO;
...
ReadWriteFiles("test.bin");
...
private void ReadWriteFiles(string fileName)
{
if (File.Exists(fileName))
{
Console.WriteLine($"{fileName} already exists!");
return;
}
using (FileStream fs = new(fileName, FileMode.CreateNew))
{
using BinaryWriter writer = new(fs);
for (int i = 0; i < 11; i++)
{
writer.Write(i);
}
}
using (FileStream fs = new(fileName, FileMode.Open, FileAccess.Read))
{
using BinaryReader reader = new(fs);
for (int i = 0; i < 11; i++)
{
Console.WriteLine(reader.ReadInt32());
}
}
}
Mengelola drive dan folder di .NET
Contoh berikut menunjukkan cara menggunakan DirectoryInfo dan Directory kelas untuk membuat, menghapus, dan mengelola folder. Contoh menggunakan kelas DirectoryInfo untuk membuat direktori baru, membuat subdirektori, dan menghapus direktori. Kelas DirectoryInfo menyediakan metode untuk membuat, memindahkan, dan menghitung melalui direktori dan subdirektori. Kelas
using System.IO;
...
private void FolderTest()
{
FolderManagement(@"c:\MyDir", "Projects");
}
private void FolderManagement(string path, string subfolderName)
{
DirectoryInfo di = new(path);
try
{
// Create directory if it doesn't exist
if (di.Exists)
{
Console.WriteLine("Path already exists.");
}
else
{
di.Create();
Console.WriteLine("The directory was created successfully.");
}
// Create subdirectory if it doesn't exist
string subfolderPath = Path.Combine(path, subfolderName);
if (Directory.Exists(subfolderPath))
{
Console.WriteLine("Subfolder path already exists.");
}
else
{
di.CreateSubdirectory(subfolderName);
Console.WriteLine("The subdirectory was created successfully.");
}
// Delete directory
di.Delete(true);
Console.WriteLine("The directory was deleted successfully.");
}
catch (Exception ex)
{
Console.WriteLine("The process failed: {0}", ex.ToString());
}
}
Contoh ini menggunakan metode GetDrives
using System.IO;
...
private void DriveManagement()
{
DriveInfo[] drives = DriveInfo.GetDrives();
foreach (DriveInfo d in drives)
{
Console.WriteLine($"Drive name: {d.Name}");
Console.WriteLine($" Drive type: {d.DriveType}");
if (d.IsReady)
{
Console.WriteLine($" Volume label: {d.VolumeLabel}");
Console.WriteLine($" File system type: {d.DriveFormat}");
Console.WriteLine($" Space available to user: {d.AvailableFreeSpace, 15} bytes");
Console.WriteLine($" Total available space: {d.TotalFreeSpace, 15} bytes");
Console.WriteLine($" Total size of drive: {d.TotalSize, 15} bytes ");
}
}
}
Mengodekan dan mendekode string dengan MemoryStream
Contoh ini menunjukkan cara menggunakan kelas MemoryStream untuk menulis string secara asinkron ke aliran memori lalu membaca string dari aliran memori. Kelas Encoding digunakan untuk mengonversi string ke array byte dan kemudian menulis array byte tersebut ke aliran memori.
using System.IO;
using System.Text;
...
private async Task EncodeDecodeStringAsync(string inputData)
{
using MemoryStream stream = new();
var inputBytes = Encoding.UTF8.GetBytes(inputData);
await stream.WriteAsync(inputBytes, 0, inputBytes.Length);
stream.Seek(0, SeekOrigin.Begin);
using StreamReader reader = new(stream);
string text = await reader.ReadToEndAsync();
Console.WriteLine(text);
}
Nota
Untuk informasi tentang mengonversi antara aliran .NET dan aliran WinRT, lihat Cara: Mengonversi antara aliran .NET dan Windows Runtime.
Lihat juga
Mengakses file dan folder dengan Windows App SDK dan WinRT API
Windows developer