Bekerja dengan file
Topik ini mencakup apa yang perlu Anda ketahui untuk mulai membaca, dan menulis ke, file dalam aplikasi Platform Windows Universal (UWP). API dan jenis utama diperkenalkan, dan tautan disediakan untuk membantu Anda mempelajari lebih lanjut.
Ini bukan tutorial. Jika Anda menginginkan tutorial, lihat Membuat, menulis, dan membaca file yang, selain menunjukkan cara membuat, membaca, dan menulis file, menunjukkan cara menggunakan buffer dan streaming. Anda mungkin juga tertarik dengan sampel akses File yang menunjukkan cara membuat, membaca, menulis, menyalin, dan menghapus file, serta cara mengambil properti file dan mengingat file atau folder sehingga aplikasi Anda dapat dengan mudah mengaksesnya lagi.
Kita akan melihat kode untuk menulis dan membaca teks dari file dan cara mengakses folder lokal, roaming, dan sementara aplikasi.
Apa yang perlu Anda ketahui
Berikut adalah jenis utama yang perlu Anda ketahui tentang membaca atau menulis teks dari/ke file:
Windows.Storage.StorageFile mewakili file. Kelas ini memiliki properti yang menyediakan informasi tentang file, dan metode untuk membuat, membuka, menyalin, menghapus, dan mengganti nama file. Anda mungkin terbiasa berurusan dengan jalur string. Ada beberapa API Runtime Windows yang mengambil jalur string, tetapi lebih sering Anda akan menggunakan StorageFile untuk mewakili file karena beberapa file yang Anda kerjakan di UWP mungkin tidak memiliki jalur, atau mungkin memiliki jalur yang tidak berat. Gunakan StorageFile.GetFileFromPathAsync() untuk mengonversi jalur string ke StorageFile.
Kelas FileIO menyediakan cara mudah untuk membaca dan menulis teks. Kelas ini juga dapat membaca/menulis array byte, atau konten buffer. Kelas ini sangat mirip dengan kelas PathIO . Perbedaan utamanya adalah alih-alih mengambil jalur string, seperti yang dilakukan PathIO , dibutuhkan StorageFile.
Windows.Storage.StorageFolder mewakili folder (direktori). Kelas ini memiliki metode untuk membuat file, mengkueri konten folder, membuat, mengganti nama, dan menghapus folder, dan properti yang menyediakan informasi tentang folder.
Cara umum untuk mendapatkan StorageFolder meliputi:
- Windows.Storage.Pickers.FolderPicker yang memungkinkan pengguna untuk menavigasi ke folder yang ingin mereka gunakan.
- Windows.Storage.ApplicationData.Current yang menyediakan StorageFolder khusus untuk salah satu folder lokal ke aplikasi seperti folder lokal, roaming, dan sementara.
- Windows.Storage.KnownFolders yang menyediakan StorageFolder untuk pustaka yang diketahui seperti pustaka Musik atau Gambar.
Menulis teks ke file
Untuk pengenalan ini, kami akan fokus pada skenario sederhana: membaca dan menulis teks. Mari kita mulai dengan melihat beberapa kode yang menggunakan kelas FileIO untuk menulis teks ke file.
Windows.Storage.StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
Windows.Storage.StorageFile file = await storageFolder.CreateFileAsync("test.txt",
Windows.Storage.CreationCollisionOption.OpenIfExists);
await Windows.Storage.FileIO.WriteTextAsync(file, "Example of writing a string\r\n");
// Append a list of strings, one per line, to the file
var listOfStrings = new List<string> { "line1", "line2", "line3" };
await Windows.Storage.FileIO.AppendLinesAsync(file, listOfStrings); // each entry in the list is written to the file on its own line.
Kami pertama-tama mengidentifikasi di mana file harus berada. Windows.Storage.ApplicationData.Current.LocalFolder
menyediakan akses ke folder data lokal, yang dibuat untuk aplikasi Anda saat diinstal. Lihat Mengakses sistem file untuk detail tentang folder yang dapat diakses aplikasi Anda.
Kemudian, kami menggunakan StorageFolder untuk membuat file (atau membukanya jika sudah ada).
Kelas FileIO menyediakan cara mudah untuk menulis teks ke file. FileIO.WriteTextAsync()
mengganti seluruh isi file dengan teks yang disediakan. FileIO.AppendLinesAsync()
menambahkan kumpulan string ke file --menulis satu string per baris.
Membaca teks dari file
Seperti halnya menulis file, membaca file dimulai dengan menentukan di mana file berada. Kita akan menggunakan lokasi yang sama seperti pada contoh di atas. Kemudian kita akan menggunakan kelas FileIO untuk membaca kontennya.
Windows.Storage.StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
Windows.Storage.StorageFile file = await storageFolder.GetFileAsync("test.txt");
string text = await Windows.Storage.FileIO.ReadTextAsync(file);
Anda juga dapat membaca setiap baris file menjadi string individual dalam koleksi dengan IList<string> contents = await Windows.Storage.FileIO.ReadLinesAsync(sampleFile);
Mengakses sistem file
Di platform UWP, akses folder dibatasi untuk memastikan integritas dan privasi data pengguna.
Folder aplikasi
Saat aplikasi UWP diinstal, beberapa folder dibuat di bawah c:\users<user name>\AppData\Local\Packages<app package identifier>\ to store, antara lain, file lokal, roaming, dan sementara aplikasi. Aplikasi ini tidak perlu mendeklarasikan kemampuan apa pun untuk mengakses folder ini, dan folder ini tidak dapat diakses oleh aplikasi lain. Folder ini juga dihapus saat aplikasi dihapus instalasinya.
Ini adalah beberapa folder aplikasi yang biasanya Anda gunakan:
LocalState: Untuk data lokal ke perangkat saat ini. Saat perangkat dicadangkan, data dalam direktori ini disimpan dalam gambar cadangan di OneDrive. Jika pengguna mengatur ulang atau mengganti perangkat, data akan dipulihkan. Akses folder ini dengan
Windows.Storage.ApplicationData.Current.LocalFolder.
Simpan data lokal yang tidak ingin Anda cadangkan ke OneDrive di LocalCacheFolder, yang bisa Anda akses denganWindows.Storage.ApplicationData.Current.LocalCacheFolder
.RoamingState: Data yang disimpan di sini tidak lagi menjelajah (pada Windows 11), tetapi folder masih tersedia. Akses folder roaming dengan
Windows.Storage.ApplicationData.Current.RoamingFolder
. Pengganti yang disarankan adalah Azure App Service. Azure App Service didukung secara luas, terdokumen dengan baik, andal, dan mendukung skenario lintas platform/lintas ekosistem seperti iOS, Android, dan web.TempState: Untuk data yang mungkin dihapus saat aplikasi tidak berjalan. Akses folder ini dengan
Windows.Storage.ApplicationData.Current.TemporaryFolder
.
Mengakses sistem file lainnya
Aplikasi UWP harus menyatakan niatnya untuk mengakses pustaka pengguna tertentu dengan menambahkan kemampuan yang sesuai ke manifesnya. Pengguna kemudian diminta saat aplikasi diinstal untuk memverifikasi bahwa mereka mengotorisasi mengakses pustaka yang ditentukan. Jika tidak, aplikasi tidak diinstal. Ada kemampuan untuk mengakses gambar, video, dan pustaka musik. Lihat Deklarasi kemampuan aplikasi untuk daftar lengkap. Untuk mendapatkan StorageFolder untuk pustaka ini, gunakan kelas Windows.Storage.KnownFolders .
Pustaka dokumen
Meskipun ada kemampuan untuk mengakses pustaka dokumen pengguna, kemampuan tersebut dibatasi yang berarti bahwa aplikasi yang menyatakan akan ditolak oleh Microsoft Store kecuali Anda mengikuti proses untuk mendapatkan persetujuan khusus. Ini tidak ditujukan untuk penggunaan umum. Sebagai gantinya, gunakan pemilih file atau folder (lihat Membuka file dan folder dengan pemilih dan Menyimpan file dengan pemilih) yang memungkinkan pengguna untuk menavigasi ke folder atau file. Saat pengguna menavigasi ke folder atau file, mereka telah secara implisit memberikan izin bagi aplikasi untuk mengaksesnya dan sistem mengizinkan akses.
Akses umum
Atau, aplikasi Anda dapat mendeklarasikan kemampuan broadFileSystem terbatas dalam manifesnya, yang juga memerlukan persetujuan Microsoft Store. Kemudian aplikasi dapat mengakses file apa pun yang dapat diakses pengguna tanpa memerlukan intervensi pemilih file atau folder.
Untuk daftar komprehensif lokasi yang dapat diakses aplikasi, lihat Izin akses file.
API dan dokumen yang berguna
Berikut adalah ringkasan cepat API, dan dokumentasi berguna lainnya, untuk membantu Anda memulai file dan folder.
API yang Berguna
API | Deskripsi |
---|---|
Windows.Storage.StorageFile | Menyediakan informasi tentang file, dan metode untuk membuat, membuka, menyalin, menghapus, dan mengganti nama file. |
Windows.Storage.StorageFolder | Menyediakan informasi tentang folder, metode untuk membuat file, dan metode untuk membuat, mengganti nama, dan menghapus folder. |
FileIO | Menyediakan cara mudah untuk membaca dan menulis teks. Kelas ini juga dapat membaca/menulis array byte atau konten buffer. |
PathIO | Menyediakan cara mudah untuk membaca/menulis teks dari/ke file yang diberi jalur string untuk file tersebut. Kelas ini juga dapat membaca/menulis array byte atau konten buffer. |
DataReader & DataWriter | Baca dan tulis buffer, byte, bilangan bulat, GUID, Rentang Waktu, dan lainnya, dari/ke aliran. |
Windows.Storage.ApplicationData.Current | Menyediakan akses ke folder yang dibuat untuk aplikasi seperti folder lokal, folder roaming, dan folder file sementara. |
Windows.Storage.Pickers.FolderPicker | Memungkinkan pengguna memilih folder dan mengembalikan StorageFolder untuk folder tersebut. Ini adalah cara Anda mendapatkan akses ke lokasi yang tidak dapat diakses aplikasi secara default. |
Windows.Storage.Pickers.FileOpenPicker | Memungkinkan pengguna memilih file untuk dibuka dan mengembalikan StorageFile untuk file tersebut. Ini adalah cara Anda mendapatkan akses ke file yang tidak dapat diakses aplikasi secara default. |
Windows.Storage.Pickers.FileSavePicker | Memungkinkan pengguna memilih nama file, ekstensi, dan lokasi penyimpanan untuk file. Mengembalikan StorageFile. Ini adalah cara Anda menyimpan file ke lokasi yang tidak dapat diakses aplikasi secara default. |
Namespace Layanan Windows.Storage.Streams | Mencakup membaca dan menulis aliran. Secara khusus, lihat kelas DataReader dan DataWriter yang membaca dan menulis buffer, byte, bilangan bulat, GUID, Rentang Waktu, dan banyak lagi. |
Dokumen yang berguna
Topik | Deskripsi |
---|---|
Windows.Storage Namespace | Dokumen referensi API. |
File, folder, dan pustaka | Dokumen konseptual. |
Membuat, menulis, dan membaca file | Mencakup pembuatan, pembacaan, dan penulisan teks, data biner, dan aliran. |
Mulai menyimpan data aplikasi secara lokal | Selain mencakup praktik terbaik untuk menyimpan data lokal, mencakup tujuan folder LocalSettings dan LocalCache. |
Menyimpan dan mengambil pengaturan dan data aplikasi lainnya | Memberikan gambaran umum tentang berbagai penyimpanan data aplikasi seperti folder lokal, roaming, dan sementara. |
Izin akses file | Informasi tentang lokasi sistem file mana yang dapat diakses aplikasi Anda. |
Membuka file dan folder dengan pemilih | Memperlihatkan cara mengakses file dan folder dengan membiarkan pengguna memutuskan melalui UI pemilih. |
Windows.Storage.Streams | Jenis yang digunakan untuk membaca dan menulis aliran. |
File dan folder di pustaka Musik, Gambar, dan Video | Mencakup cara menghapus folder dari pustaka, mendapatkan daftar folder di pustaka, dan menemukan foto, musik, dan video yang disimpan. |
Sampel kode yang berguna
Sampel kode | Deskripsi |
---|---|
Sampel data aplikasi | Memperlihatkan cara menyimpan dan mengambil data yang khusus untuk setiap pengguna dengan menggunakan API data aplikasi. |
Sampel akses file | Memperlihatkan cara membuat, membaca, menulis, menyalin, dan menghapus file. |
Sampel pemilih file | Memperlihatkan cara mengakses file dan folder dengan membiarkan pengguna memilihnya dengan UI, dan cara menyimpan file sehingga pengguna dapat menentukan nama, jenis file, dan lokasi file untuk disimpan. |
Sampel JSON | Memperlihatkan cara mengodekan dan mendekode objek, array, string, angka, dan boolean JavaScript Object Notation (JSON) menggunakan namespace Windows.Data.Json. |
Sampel kode tambahan | Pilih File, folder, dan pustaka dalam daftar drop-down kategori. |