Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk bemutatja, hogyan érhetők el a fájlok és mappák a .NET API-k használatával csomagolt WinUI 3 alkalmazásokban. Megtanulhatja a fájlok olvasását és írását, a könyvtárak és meghajtók kezelését, valamint a memóriastreamek használatát a sztringek kódolásához és dekódolásához.
A WinUI-alkalmazások a WinRT és a Win32 API-k mellett .NET API-kat is használhatnak, hogy átfogó fájlrendszer-access biztosítsanak. A cikkben szereplő példák a System.IO névtérre összpontosítanak, amely biztosítja a fájl- és címtárműveletek alapvető funkcióit.
Előfeltételek
- A Visual Studio 2026 a WinUI alkalmazásfejlesztési telepített munkaterheléssel
- Egy csomagolt WinUI-project
- A C# és .NET fejlesztés alapszintű ismerete
Mit fogsz megtanulni
Ebből a cikkből megtudhatja, hogyan:
- Fájlok olvasása és írása a FileStream, a BinaryWriter és a BinaryReader használatával
- Címtárak létrehozása, törlése és kezelése a DirectoryInfo és a Címtárosztályokkal
- Meghajtóadatok lekérése a DriveInfo használatával
- Sztringek kódolása és dekódolása a MemoryStream és a StreamReader használatával
Fájlok olvasása és írása .NET API-kkal
Az alábbi példában ReadWriteFiles létrehoz egy új fájlt, egész számokat ír a fájlba, majd visszaolvassa az egész számokat a fájlból. A példa a FileStream osztályt használja egy új fájl létrehozásához és a fájl olvasásához vagy írásához való megnyitásához. A példa a BinaryWriter osztály használatával írja az egész számokat a fájlba, a BinaryReader osztály pedig beolvassa az egész számokat a fájlból.
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());
}
}
}
Meghajtók és mappák kezelése a .NET
Az alábbi példa bemutatja, hogyan használhatja a DirectoryInfo és Címtár osztályokat mappák létrehozásához, törléséhez és kezeléséhez. A példa a DirectoryInfo osztály használatával hoz létre egy új könyvtárat, létrehoz egy alkönyvtárat, és törli a könyvtárat. A DirectoryInfo osztály metódusokat biztosít könyvtárak és alkönyvtárak létrehozására, áthelyezésére és számbavételére. A Directory osztály statikus metódusokat biztosít könyvtárakon és alkönyvtárakon keresztüli létrehozáshoz, áthelyezéshez és számbavételhez.
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());
}
}
Ez a példa a GetDrives statikus metódust használja a rendszer összes meghajtójára vonatkozó információk lekéréséhez. A DriveInfo osztály információt nyújt a meghajtókról, például a meghajtó típusáról, címkéiről, fájlrendszeréről és szabad területéről.
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 ");
}
}
}
Sztringek kódolása és dekódolása a MemoryStream használatával
Ez a példa bemutatja, hogyan használható a MemoryStream osztály sztringadatok kódolására és dekódolására. Először létrehoz egy MemoryStream, amely aszinkron módon ír egy sztringet egy memóriastreambe, majd beolvassa a sztringet a memóriastreamből. A kódolási osztály használatával a sztringet bájttömbté konvertálja, majd a bájttömböt a memóriafolyamba írja. A StreamReader ezután aszinkron módon beolvassa a bájttömböt a memóriastreamből, majd visszaalakítja a bájttömböt sztringgé ReadToEndAsyncmeghívásával.
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);
}
Megjegyzés:
A .NET streamek és a WinRT-streamek közötti konvertálásról további információt a Hogyan is: Konvertálás .NET és Windows Runtime streamek között.
Lásd még
Hozzáférés fájlokhoz és mappákhoz a Windows App SDK-val és WinRT API-kkal
Windows developer