F # - I / O Dasar
Output Input Dasar meliputi -
- Membaca dari dan menulis ke konsol.
- Membaca dari dan menulis ke dalam file.
Modul Core.Printf
Kami telah menggunakan fungsi printf dan printfn untuk menulis ke konsol. Di bagian ini, kita akan melihat detail filePrintf modul F #.
Terlepas dari fungsi di atas, modul Core.Printf dari F # memiliki berbagai metode lain untuk mencetak dan memformat menggunakan% penanda sebagai placeholder. Tabel berikut menunjukkan metode dengan deskripsi singkat -
Nilai | Deskripsi |
---|---|
bprintf: StringBuilder → BuilderFormat <'T> →' T | Mencetak ke StringBuilder. |
eprintf: TextWriterFormat <'T> →' T | Mencetak keluaran yang diformat ke stderr. |
eprintfn: TextWriterFormat <'T> →' T | Mencetak keluaran yang diformat ke stderr, menambahkan baris baru. |
failwithf: StringFormat <'T,' Result> → 'T | Mencetak ke buffer string dan memunculkan pengecualian dengan hasil yang diberikan. |
fprintf: TextWriter → TextWriterFormat <'T> →' T | Mencetak ke penulis teks. |
fprintfn: TextWriter → TextWriterFormat <'T> →' T | Mencetak ke penulis teks, menambahkan baris baru. |
kbprintf: (unit → 'Result) → StringBuilder → BuilderFormat <' T, 'Result> →' T | Seperti bprintf, tetapi memanggil fungsi yang ditentukan untuk menghasilkan hasilnya. |
kfprintf: (unit → 'Result) → TextWriter → TextWriterFormat <' T, 'Result> →' T | Seperti fprintf, tetapi memanggil fungsi yang ditentukan untuk menghasilkan hasilnya. |
kprintf: (string → 'Result) → StringFormat <' T, 'Result> →' T | Seperti printf, tetapi memanggil fungsi yang ditentukan untuk menghasilkan hasilnya. Misalnya, ini membiarkan pencetakan memaksa flush setelah semua output dimasukkan ke saluran, tetapi tidak sebelumnya. |
ksprintf: (string → 'Result) → StringFormat <' T, 'Result> →' T | Seperti sprintf, tetapi memanggil fungsi yang ditentukan untuk menghasilkan hasilnya. |
printf: TextWriterFormat <'T> →' T | Mencetak keluaran yang diformat ke stdout. |
printfn: TextWriterFormat <'T> →' T | Mencetak keluaran yang diformat ke stdout, menambahkan baris baru. |
sprintf: StringFormat <'T> →' T | Mencetak ke string dengan menggunakan buffer string internal dan mengembalikan hasilnya sebagai string. |
Spesifikasi Format
Spesifikasi format digunakan untuk memformat input atau output, sesuai dengan kebutuhan programmer.
Ini adalah string dengan% penanda yang menunjukkan tempat penampung format.
Sintaks tempat penampung Format adalah -
%[flags][width][.precision][type]
Itu type diartikan sebagai -
Tipe | Deskripsi |
---|---|
% b | Format a bool, diformat sebagai true atau false. |
% c | Memformat karakter. |
% s | Format a string, diformat sebagai isinya, tanpa menafsirkan karakter escape apa pun. |
% d,% i | Memformat tipe bilangan bulat dasar yang diformat sebagai bilangan bulat desimal, ditandatangani jika jenis bilangan bulat dasar ditandatangani. |
% u | Memformat semua jenis bilangan bulat dasar yang diformat sebagai bilangan bulat desimal tak bertanda. |
% x | Memformat semua jenis bilangan bulat dasar yang diformat sebagai bilangan bulat heksadesimal tak bertanda, menggunakan huruf kecil a sampai f. |
% X | Memformat semua jenis bilangan bulat dasar yang diformat sebagai bilangan bulat heksadesimal tanpa tanda, menggunakan huruf besar A sampai F. |
%Hai | Memformat semua jenis bilangan bulat dasar yang diformat sebagai bilangan bulat oktal tak bertanda. |
% e,% E,% f,% F,% g,% G | Memformat jenis titik mengambang dasar apa pun (float, float32) diformat menggunakan spesifikasi format titik mengambang gaya-C. |
% e,% E | Memformat nilai bertanda yang berbentuk [-] d.dddde [tanda] ddd di mana d adalah digit desimal tunggal, dddd adalah satu atau lebih digit desimal, ddd persis tiga digit desimal, dan tanda + atau -. |
% f | Memformat nilai bertanda yang memiliki bentuk [-] dddd.dddd, di mana dddd adalah satu atau lebih digit desimal. Jumlah digit sebelum titik desimal bergantung pada besarnya angka, dan jumlah digit setelah titik desimal bergantung pada ketepatan yang diminta. |
% g,% G | Memformat nilai bertanda yang dicetak dalam format f atau e, mana saja yang lebih ringkas untuk nilai dan presisi yang diberikan. |
% M | Memformat nilai Desimal. |
%HAI | Memformat nilai apa pun, dicetak dengan mengemas objek dan menggunakannya ToString metode. |
% A,% + A | Memformat nilai apa pun, dicetak dengan pengaturan tata letak default. Gunakan% + A untuk mencetak struktur serikat yang terdiskriminasi dengan representasi internal dan pribadi. |
%Sebuah | Penentu format umum, membutuhkan dua argumen. Argumen pertama adalah fungsi yang menerima dua argumen: pertama, parameter konteks dari tipe yang sesuai untuk fungsi pemformatan yang diberikan (misalnya, TextWriter), dan kedua, nilai yang akan dicetak dan yang mengeluarkan atau mengembalikan teks yang sesuai. Argumen kedua adalah nilai khusus untuk dicetak. |
% t | Sebuah penentu format umum, membutuhkan satu argumen: fungsi yang menerima parameter konteks dari tipe yang sesuai untuk fungsi pemformatan yang diberikan (aTextWriter) dan yang mengeluarkan atau mengembalikan teks yang sesuai. Jenis integer dasar adalahbyte, sbyte, int16, uint16, int32, uint32, int64, uint64, nativeint, dan unativeint. Jenis dasar floating point adalah float dan float32. |
Itu widthadalah parameter opsional. Ini adalah bilangan bulat yang menunjukkan lebar minimal dari hasil. Misalnya,% 5d mencetak bilangan bulat dengan setidaknya spasi 5 karakter.
Sah flags dijelaskan dalam tabel berikut -
Nilai | Deskripsi |
---|---|
0 | Menentukan untuk menambahkan nol sebagai ganti spasi untuk membuat lebar yang diperlukan. |
- | Menentukan untuk meratakan kiri hasil dalam lebar yang ditentukan. |
+ | Menentukan untuk menambahkan karakter + jika angka tersebut positif (untuk mencocokkan tanda - untuk angka negatif). |
'' (spasi) | Menentukan untuk menambahkan spasi ekstra jika angkanya positif (untuk mencocokkan tanda - untuk bilangan negatif). |
# | Tidak valid. |
Contoh
printf "Hello "
printf "World"
printfn ""
printfn "Hello "
printfn "World"
printf "Hi, I'm %s and I'm a %s" "Rohit" "Medical Student"
printfn "d: %f" 212.098f
printfn "e: %f" 504.768f
printfn "x: %g" 212.098f
printfn "y: %g" 504.768f
printfn "x: %e" 212.098f
printfn "y: %e" 504.768f
printfn "True: %b" true
Ketika Anda mengkompilasi dan menjalankan program, itu menghasilkan output berikut -
Hello World
Hello
World
Hi, I'm Rohit and I'm a Medical Studentd: 212.098000
e: 504.768000
x: 212.098
y: 504.768
x: 2.120980e+002
y: 5.047680e+002
True: true
Kelas Konsol
Kelas ini adalah bagian dari kerangka .NET. Ini mewakili aliran input, output, dan kesalahan standar untuk aplikasi konsol.
Ini menyediakan berbagai metode untuk membaca dari dan menulis ke konsol. Tabel berikut menunjukkan metode -
metode | Deskripsi |
---|---|
Berbunyi() | Memutar suara bip melalui speaker konsol. |
Bip (Int32, Int32) | Memutar suara bip pada frekuensi dan durasi tertentu melalui speaker konsol. |
Bersih | Menghapus buffer konsol dan jendela konsol yang sesuai dari informasi tampilan. |
MoveBufferArea (Int32, Int32, Int32, Int32, Int32, Int32) | Menyalin area sumber tertentu dari buffer layar ke area tujuan yang ditentukan. |
MoveBufferArea (Int32, Int32, Int32, Int32, Int32, Int32, Char, ConsoleColor, ConsoleColor) | Menyalin area sumber tertentu dari buffer layar ke area tujuan yang ditentukan. |
OpenStandardError () | Memperoleh aliran kesalahan standar. |
OpenStandardError (Int32) | Memperoleh aliran kesalahan standar, yang disetel ke ukuran buffer yang ditentukan. |
OpenStandardInput () | Memperoleh aliran input standar. |
OpenStandardInput (Int32) | Memperoleh aliran input standar, yang disetel ke ukuran buffer yang ditentukan. |
OpenStandardOutput () | Memperoleh aliran keluaran standar. |
OpenStandardOutput (Int32) | Memperoleh aliran keluaran standar, yang disetel ke ukuran buffer yang ditentukan. |
Baca | Membaca karakter berikutnya dari aliran input standar. |
Kunci Baca() | Memperoleh karakter atau tombol fungsi berikutnya yang ditekan oleh pengguna. Tombol yang ditekan ditampilkan di jendela konsol. |
ReadKey (Boolean) | Memperoleh karakter atau tombol fungsi berikutnya yang ditekan oleh pengguna. Tombol yang ditekan secara opsional ditampilkan di jendela konsol. |
ReadLine | Membaca baris karakter berikutnya dari aliran input standar. |
ResetColor | Setel warna konsol latar depan dan latar belakang ke defaultnya. |
SetBufferSize | Menyetel tinggi dan lebar area penyangga layar ke nilai yang ditentukan. |
SetCursorPosition | Mengatur posisi kursor. |
SetError | Setel properti Error ke objek TextWriter tertentu . |
SetIn | Setel properti In ke objek TextReader yang ditentukan . |
SetOut | Setel properti Out ke objek TextWriter tertentu . |
SetWindowPosition | Menetapkan posisi jendela konsol relatif terhadap buffer layar. |
SetWindowSize | Menetapkan tinggi dan lebar jendela konsol ke nilai yang ditentukan. |
Menulis (Boolean) | Menulis representasi teks dari nilai Boolean yang ditentukan ke aliran keluaran standar. |
Tulis (Char) | Menulis nilai karakter Unicode yang ditentukan ke aliran keluaran standar. |
Tulis (Char []) | Menulis larik karakter Unicode yang ditentukan ke aliran keluaran standar. |
Tulis (Desimal) | Menulis representasi teks dari nilai Desimal yang ditentukan ke aliran keluaran standar. |
Menulis (Ganda) | Menulis representasi teks dari nilai titik-mengambang presisi ganda yang ditentukan ke aliran keluaran standar. |
Tulis (Int32) | Menulis representasi teks dari nilai integer bertanda tangan 32-bit yang ditentukan ke aliran keluaran standar. |
Tulis (Int64) | Menulis representasi teks dari nilai integer bertanda tangan 64-bit yang ditentukan ke aliran keluaran standar. |
Tulis (Objek) | Menulis representasi teks dari objek yang ditentukan ke aliran keluaran standar. |
Tulis (Tunggal) | Menulis representasi teks dari nilai titik-mengambang presisi-tunggal yang ditentukan ke aliran keluaran standar. |
Tulis (String) | Menulis nilai string yang ditentukan ke aliran keluaran standar. |
Tulis (UInt32) | Menulis representasi teks dari nilai integer 32-bit unsigned yang ditentukan ke aliran keluaran standar. |
Tulis (UInt64) | Menulis representasi teks dari nilai integer 64-bit unsigned yang ditentukan ke aliran keluaran standar. |
Tulis (String, Objek) | Menulis representasi teks dari objek yang ditentukan ke aliran keluaran standar menggunakan informasi format yang ditentukan. |
Tulis (String, Objek []) | Menulis representasi teks dari larik objek yang ditentukan ke aliran keluaran standar menggunakan informasi format yang ditentukan. |
Tulis (Char [], Int32, Int32) | Menulis subarray yang ditentukan dari karakter Unicode ke aliran keluaran standar. |
Tulis (String, Objek, Objek) | Menulis representasi teks dari objek yang ditentukan ke aliran keluaran standar menggunakan informasi format yang ditentukan. |
Tulis (String, Objek, Objek, Objek) | Menulis representasi teks dari objek yang ditentukan ke aliran keluaran standar menggunakan informasi format yang ditentukan. |
Tulis (String, Objek, Objek, Objek, Objek) | Menulis representasi teks dari objek yang ditentukan dan daftar parameter panjang-variabel ke aliran keluaran standar menggunakan informasi format yang ditentukan. |
WriteLine () | Menulis terminator baris saat ini ke aliran keluaran standar. |
WriteLine (Boolean) | Menulis representasi teks dari nilai Boolean yang ditentukan, diikuti oleh terminator baris saat ini, ke aliran keluaran standar. |
WriteLine (Char) | Menulis karakter Unicode yang ditentukan, diikuti dengan terminator baris saat ini, nilai ke aliran keluaran standar. |
WriteLine (Char []) | Menulis larik karakter Unicode yang ditentukan, diikuti dengan terminator baris saat ini, ke aliran keluaran standar. |
WriteLine (Desimal) | Menulis representasi teks dari nilai Desimal yang ditentukan, diikuti oleh terminator baris saat ini, ke aliran keluaran standar. |
WriteLine (Ganda) | Menulis representasi teks dari nilai titik-mengambang presisi ganda yang ditentukan, diikuti oleh terminator baris saat ini, ke aliran keluaran standar. |
WriteLine (Int32) | Menulis representasi teks dari nilai integer bertanda tangan 32-bit yang ditentukan, diikuti oleh terminator baris saat ini, ke aliran keluaran standar. |
WriteLine (Int64) | Menulis representasi teks dari nilai integer bertanda tangan 64-bit yang ditentukan, diikuti oleh terminator baris saat ini, ke aliran keluaran standar. |
WriteLine (Objek) | Menulis representasi teks dari objek yang ditentukan, diikuti oleh terminator baris saat ini, ke aliran keluaran standar. |
WriteLine (Tunggal) | Menulis representasi teks dari nilai titik-mengambang presisi tunggal yang ditentukan, diikuti oleh terminator baris saat ini, ke aliran keluaran standar. |
WriteLine (String) | Menulis nilai string yang ditentukan, diikuti oleh terminator baris saat ini, ke aliran keluaran standar. |
WriteLine (UInt32) | Menulis representasi teks dari nilai integer 32-bit unsigned yang ditentukan, diikuti oleh terminator baris saat ini, ke aliran keluaran standar. |
WriteLine (UInt64) | Menulis representasi teks dari nilai integer 64-bit unsigned yang ditentukan, diikuti oleh terminator baris saat ini, ke aliran keluaran standar. |
WriteLine (String, Objek) | Menulis representasi teks dari objek yang ditentukan, diikuti oleh terminator baris saat ini, ke aliran keluaran standar menggunakan informasi format yang ditentukan. |
WriteLine (String, Objek []) | Menulis representasi teks dari larik objek yang ditentukan, diikuti oleh terminator baris saat ini, ke aliran keluaran standar menggunakan informasi format yang ditentukan. |
WriteLine (Char [], Int32, Int32) | Menulis subarray yang ditentukan dari karakter Unicode, diikuti oleh terminator baris saat ini, ke aliran keluaran standar. |
WriteLine (String, Objek, Objek) | Menulis representasi teks dari objek yang ditentukan, diikuti oleh terminator baris saat ini, ke aliran keluaran standar menggunakan informasi format yang ditentukan. |
WriteLine (String, Objek, Objek, Objek) | Menulis representasi teks dari objek yang ditentukan, diikuti oleh terminator baris saat ini, ke aliran keluaran standar menggunakan informasi format yang ditentukan. |
WriteLine (String, Objek, Objek, Objek, Objek) | Menulis representasi teks dari objek yang ditentukan dan daftar parameter panjang variabel, diikuti oleh terminator baris saat ini, ke aliran keluaran standar menggunakan informasi format yang ditentukan. |
Contoh berikut menunjukkan membaca dari konsol dan menulis ke dalamnya -
Contoh
open System
let main() =
Console.Write("What's your name? ")
let name = Console.ReadLine()
Console.Write("Hello, {0}\n", name)
Console.WriteLine(System.String.Format("Big Greetings from {0} and {1}", "TutorialsPoint", "Absoulte Classes"))
Console.WriteLine(System.String.Format("|{0:yyyy-MMM-dd}|", System.DateTime.Now))
main()
Ketika Anda mengkompilasi dan menjalankan program, itu menghasilkan output berikut -
What's your name? Kabir
Hello, Kabir
Big Greetings from TutorialsPoint and Absoulte Classes
|2015-Jan-05|
Ruang nama System.IO
Namespace System.IO berisi berbagai kelas yang berguna untuk melakukan I / O dasar.
Ini berisi tipe atau kelas yang memungkinkan membaca dan menulis ke file dan aliran data dan tipe yang menyediakan file dasar dan dukungan direktori.
Kelas berguna untuk bekerja dengan sistem file -
- Kelas System.IO.File digunakan untuk membuat, menambahkan, dan menghapus file.
- Kelas System.IO.Directory digunakan untuk membuat, memindahkan, dan menghapus direktori.
- Kelas System.IO.Path melakukan operasi pada string, yang mewakili jalur file.
- Kelas System.IO.FileSystemWatcher memungkinkan pengguna untuk mendengarkan direktori untuk perubahan.
Kelas berguna untuk bekerja dengan aliran (urutan byte) -
- Kelas System.IO.StreamReader digunakan untuk membaca karakter dari aliran.
- Kelas System.IO.StreamWriter digunakan untuk menulis karakter ke aliran.
- Kelas System.IO.MemoryStream membuat aliran byte dalam memori.
Tabel berikut menunjukkan semua kelas yang disediakan di namespace bersama dengan deskripsi singkat -
Kelas | Deskripsi |
---|---|
BinaryReader | Membaca tipe data primitif sebagai nilai biner dalam pengkodean tertentu. |
BinaryWriter | Menulis tipe primitif dalam biner ke aliran dan mendukung penulisan string dalam pengkodean tertentu. |
BufferedStream | Menambahkan lapisan buffering untuk membaca dan menulis operasi di aliran lain. |
Direktori | Mengekspos metode statis untuk membuat, memindahkan, dan menghitung melalui direktori dan subdirektori. |
DirectoryInfo | Memperlihatkan metode instance untuk membuat, memindahkan, dan menghitung melalui direktori dan subdirektori. |
DirectoryNotFoundException | Pengecualian yang muncul ketika bagian dari file atau direktori tidak dapat ditemukan. |
DriveInfo | Memberikan akses ke informasi di drive. |
DriveNotFoundException | Pengecualian yang dilontarkan saat mencoba mengakses drive atau share yang tidak tersedia. |
EndOfStreamException | Pengecualian yang diberikan saat membaca diupayakan melewati akhir aliran. |
ErrorEventArgs | Menyediakan data untuk peristiwa FileSystemWatcher.Error. |
Mengajukan | Menyediakan metode statis untuk membuat, menyalin, menghapus, memindahkan, dan membuka satu file, dan membantu dalam pembuatan objek FileStream. |
FileFormatException | Pengecualian yang muncul ketika file input atau aliran data yang seharusnya sesuai dengan spesifikasi format file tertentu salah format. |
FileInfo | Menyediakan properti dan metode instance untuk pembuatan, penyalinan, penghapusan, pemindahan, dan pembukaan file, dan bantu dalam pembuatan objek FileStream. |
FileLoadException | Pengecualian yang muncul saat rakitan terkelola ditemukan tetapi tidak dapat dimuat. |
FileNotFoundException | Pengecualian yang muncul saat upaya untuk mengakses file yang tidak ada di disk gagal. |
FileStream | Memaparkan Stream di sekitar file, mendukung operasi baca dan tulis sinkron dan asinkron. |
FileSystemEventArgs | Menyediakan data untuk acara direktori - Diubah, Dibuat, Dihapus. |
FileSystemInfo | Menyediakan kelas dasar untuk objek FileInfo dan DirectoryInfo. |
FileSystemWatcher | Mendengarkan pemberitahuan perubahan sistem file dan memunculkan peristiwa ketika direktori, atau file dalam direktori, berubah. |
InternalBufferOverflowException | Pengecualian muncul saat buffer internal meluap. |
InvalidDataException | Pengecualian yang muncul ketika aliran data dalam format yang tidak valid. |
IODescriptionAttribute | Menetapkan deskripsi yang dapat ditampilkan desainer visual saat mereferensikan acara, perluasan, atau properti. |
IOException | Pengecualian yang muncul saat terjadi kesalahan I / O. |
MemoryStream | Membuat aliran yang penyimpanan pendukungnya adalah memori. |
Jalan | Melakukan operasi pada instance String yang berisi informasi jalur file atau direktori. Operasi ini dilakukan dengan cara lintas platform. |
PathTooLongException | Pengecualian yang muncul saat jalur atau nama file lebih panjang dari panjang maksimum yang ditentukan sistem. |
PipeException | Dilempar saat terjadi kesalahan dalam pipa bernama. |
RenamedEventArgs | Memberikan data untuk acara Berganti Nama. |
Aliran | Menyediakan tampilan umum dari urutan byte. Ini adalah kelas abstrak. |
StreamReader | Menerapkan TextReader yang membaca karakter dari aliran byte dalam pengkodean tertentu. |
StreamWriter | Menerapkan Penulis Teks untuk menulis karakter ke aliran dalam pengkodean tertentu. Untuk menelusuri kode sumber .NET Framework untuk jenis ini, lihat Sumber Referensi. |
StringReader | Menerapkan TextReader yang membaca dari string. |
Penulis String | Menerapkan Penulis Teks untuk menulis informasi ke string. Informasi disimpan dalam StringBuilder yang mendasari. |
TextReader | Mewakili pembaca yang dapat membaca rangkaian karakter yang berurutan. |
Penulis Teks | Mewakili seorang penulis yang dapat menulis serangkaian karakter berurutan. Kelas ini abstrak. |
UnmanagedMemoryAccessor | Memberikan akses acak ke blok memori yang tidak dikelola dari kode yang dikelola. |
UnmanagedMemoryStream | Menyediakan akses ke blok memori yang tidak dikelola dari kode yang dikelola. |
WindowsRuntimeStorageExtensions | Berisi metode ekstensi untuk antarmuka IStorageFile dan IStorageFolder di Windows Runtime saat mengembangkan aplikasi Windows Store. |
WindowsRuntimeStreamExtensions | Berisi metode ekstensi untuk mengonversi antara aliran di Windows Runtime dan aliran terkelola di aplikasi .NET untuk Windows Store. |
Contoh
Contoh berikut membuat file bernama test.txt, menulis pesan di sana, membaca teks dari file dan mencetaknya di konsol.
Note - Jumlah kode yang diperlukan untuk melakukan ini ternyata lebih sedikit!
open System.IO // Name spaces can be opened just as modules
File.WriteAllText("test.txt", "Hello There\n Welcome to:\n Tutorials Point")
let msg = File.ReadAllText("test.txt")
printfn "%s" msg
Ketika Anda mengkompilasi dan menjalankan program, itu menghasilkan output berikut -
Hello There
Welcome to:
Tutorials Point