基本輸入輸出包括
我們已經(jīng)使用了printf和所述printfn功能寫入到控制臺。在本節(jié)中,我們將看看F#的printf的模塊的詳細信息。
除了上述功能,F(xiàn)#的Core.Printf模塊具有使用%標記用作占位符用于打印和格式化各種其它方法。下表顯示了簡要描述的方法。
值 | 描述 |
---|---|
bprintf : StringBuilder → BuilderFormat<'T> → 'T | 打印到一個StringBuilder。 |
eprintf : TextWriterFormat<'T> → 'T | 打印格式化輸出到stderr。 |
eprintfn : TextWriterFormat<'T> → 'T | 打印格式化輸出到stderr,增加一個換行符。 |
failwithf : StringFormat<'T,'Result> → 'T | 打印到一個字符串緩沖區(qū),提高與給定結(jié)果的異常。 |
fprintf : TextWriter → TextWriterFormat<'T> → 'T | 打印到一個文本作家。 |
fprintfn : TextWriter → TextWriterFormat<'T> → 'T | 打印到文本編寫,添加一個換行符。 |
kbprintf : (unit → 'Result) → StringBuilder → BuilderFormat<'T,'Result> → 'T | 就像bprintf一樣,但是調(diào)用指定的函數(shù)來生成結(jié)果。 |
kfprintf : (unit → 'Result) → TextWriter → TextWriterFormat<'T,'Result> → 'T | 就像fprintf,但是調(diào)用指定的函數(shù)來生成結(jié)果。 |
kprintf : (string → 'Result) → StringFormat<'T,'Result> → 'T | 如printf,而是調(diào)用指定的函數(shù)生成的結(jié)果。例如,這些讓印刷力的沖洗后的所有輸出已輸入到信道,而不是之前。 |
ksprintf : (string → 'Result) → StringFormat<'T,'Result> → 'T | 像sprintf一樣,但調(diào)用指定的函數(shù)來生成結(jié)果。 |
printf : TextWriterFormat<'T> → 'T | 打印格式化輸出到標準輸出。 |
printfn : TextWriterFormat<'T> → 'T | 打印格式化輸出到標準輸出,增加一個換行符。 |
sprintf : StringFormat<'T> → 'T | 打印到一個字符串使用內(nèi)部字符串緩沖區(qū)并返回結(jié)果為一個字符串。 |
格式規(guī)范用來格式化輸入或輸出,可根據(jù)程序員的需要。
這些都是標志%顯示格式的占位符的字符串。
格式占位符的語法是
%[flags][width][.precision][type]
該類型被解釋為
類型 | 描述 |
---|---|
%b | 格式化為bool,格式為true或false。 |
%C | 格式化字符。 |
%S | 格式化一個字符串,格式為其內(nèi)容,而不解釋任何轉(zhuǎn)義字符。 |
%D,%I | 格式格式化為十進制整數(shù)任何基本的整數(shù)類型,如果基本的整數(shù)類型的簽署。 |
%U | 格式化格式化為一個無符號十進制整數(shù)任何基本的整數(shù)類型。 |
%X | 格式格式化為無符號十六進制整數(shù)任何基本的整數(shù)類型,使用A到F小寫字母。 |
%X | 格式格式化為無符號十六進制整數(shù)任何基本的整數(shù)類型,從A到F使用大寫字母 |
%ο | 格式化格式化為一個無符號的八進制整數(shù)任何基本的整數(shù)類型。 |
%E,%E,%F,%F,%G,%G | 格式化使用C風(fēng)格浮點格式規(guī)范格式化的任何基本浮點類型(float,float32)。 |
%E,%E | 格式具有形式的符號值[ - ] d.dddde [星座] DDD其中d是一個十進制數(shù),dddd為一個或多個十進制數(shù)字,ddd肯定三個十進制數(shù)字,符號為+或 - 。 |
%F | 有格式化的形式符號值[ - ] dddd.dddd,其中dddd是一個或多個十進制數(shù)字。的小數(shù)點之前數(shù)量取決于數(shù)的大小,和數(shù)字的小數(shù)點后的數(shù)量取決于所要求的精度。 |
%G,%G | 格式化f中或電子格式打印的符號值,取其對給定值和精度更緊湊。 |
%M | 格式化一個十進制值。 |
%O | 格式的任何值,拳擊對象,并使用其ToString方法打印。 |
%A,%+ A | 格式的任何值,印有默認的布局設(shè)置。使用%+ A打印識別聯(lián)合的結(jié)構(gòu)與內(nèi)部和私人交涉。 |
%一個 | 一般格式說明,需要兩個參數(shù)。第一個參數(shù)是一個接受兩個參數(shù)的函數(shù):第一,適當類型的給定格式化函數(shù)的上下文參數(shù)(例如,一個TextWriter的),二值打印和輸出兩種或返回相應(yīng)的文本。 第二個參數(shù)是打印的特殊價值。 |
%T | 一般格式說明符需要一個參數(shù):一個函數(shù),它接受給定格式化函數(shù)(aTextWriter)的適當類型的上下文參數(shù),并輸出或返回適當?shù)奈谋尽?基本整數(shù)類型有byte,sbyte,int16,uint16,int32,uint32,int64,uint64,nativeint和unativeint。 基本浮點類型是float和float32。 |
width是可選參數(shù)。它是一個整數(shù),指示結(jié)果的最小寬度。例如,%5D打印帶有5個字符至少有空格的整數(shù)。
有效flags在下表中描述
值 | 描述 |
---|---|
0 | 指定要添加零而不是空格來彌補所需的寬度。 |
- | 指定要左對齊指定寬度內(nèi)的結(jié)果。 |
+ | 指定要添加+字符如果數(shù)字為正(匹配 - 符號為負號)。 |
' ' (space) | 指定要添加一個額外的空間,如果該數(shù)字為正數(shù)(匹配 - 號為負數(shù))。 |
# | 無效。 |
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
當你編譯和執(zhí)行程序,它產(chǎn)生以下輸出
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
這個類是.NET框架的一部分。它代表了標準的輸入,輸出和錯誤控制臺應(yīng)用程序流。
它提供了用于從讀出和寫入到控制臺的各種方法。下表顯示的方法 -
方法 | 描述 |
---|---|
Beep() | 播放提示音通過控制臺揚聲器的聲音。 |
Beep(Int32, Int32) | 播放通過控制臺揚聲器指定的頻率和持續(xù)時間的蜂鳴聲。 |
Clear | 清除控制臺緩沖區(qū)和顯示信息對應(yīng)的控制臺窗口。 |
MoveBufferArea(Int32, Int32, Int32, Int32, Int32, Int32) | 復(fù)制屏幕緩沖區(qū)到指定目標區(qū)域的指定源區(qū)域。 |
MoveBufferArea(Int32, Int32, Int32, Int32, Int32, Int32, Char, ConsoleColor, ConsoleColor) | 復(fù)制屏幕緩沖區(qū)到指定目標區(qū)域的指定源區(qū)域。 |
OpenStandardError() | 收購標準錯誤流。 |
OpenStandardError(Int32) | 獲得的標準誤差流,它被設(shè)置為一個特定的緩沖區(qū)大小。 |
OpenStandardInput() | 獲取標準輸入流。 |
OpenStandardInput(Int32) | 獲取標準輸入流,它被設(shè)置為一個特定的緩沖區(qū)大小。 |
OpenStandardOutput() | 獲取標準輸出流。 |
OpenStandardOutput(Int32) | 獲取標準輸出流,它被設(shè)置為一個特定的緩沖區(qū)大小。 |
Read | 讀取從標準輸入流中的下一個字符。 |
ReadKey() | 獲得由用戶按下的下一個字符或功能鍵。按鍵顯示在控制臺窗口。 |
ReadKey(Boolean) | 獲得由用戶按下的下一個字符或功能鍵。按鍵可選地顯示在控制臺窗口。 |
ReadLine | 讀取字符從標準輸入流的下一行。 |
ResetColor | 設(shè)置前景色和背景色控制臺到默認值。 |
SetBufferSize | 設(shè)置高度和屏幕緩沖區(qū)域的寬度設(shè)置為指定值。 |
SetCursorPosition | 將光標的位置。 |
SetError | 設(shè)置錯誤屬性設(shè)置為指定的TextWriter對象。 |
SetIn | 設(shè)置在屬性設(shè)置為指定的TextReader對象。 |
SetOut | 設(shè)置輸出屬性設(shè)置為指定的TextWriter對象。 |
SetWindowPosition | 設(shè)置相對于屏幕緩沖區(qū)的控制臺窗口的位置。 |
SetWindowSize | 設(shè)置高度和控制臺窗口的寬度為指定的值。 |
Write(Boolean) | 將指定的布爾值標準輸出流的文本表示。 |
Write(Char) | 將指定的Unicode字符值到標準輸出流。 |
Write(Char[]) | 將指定的Unicode字符數(shù)組的標準輸出流。 |
Write(Decimal) | 將指定的十進制值到標準輸出流的文本表示。 |
Write(Double) | 將指定的雙精度浮點值到標準輸出流的文本表示。 |
Write(Int32) | 將指定的32位有符號整數(shù)到標準輸出流的文本表示。 |
Write(Int64) | 將指定的64位有符號整數(shù)到標準輸出流的文本表示。 |
Write(Object) | 將指定對象的標準輸出流的文本表示。 |
Write(Single) | 將指定的單精度浮點值到標準輸出流的文本表示。 |
Write(String) | 寫入指定的字符串值到標準輸出流。 |
Write(UInt32) | 將指定的32位無符號整型值到標準輸出流的文本表示。 |
Write(UInt64) | 將指定的64位無符號整型值到標準輸出流的文本表示。 |
Write(String, Object) | 寫入使用指定的格式信息,將指定對象的標準輸出流的文本表示。 |
Write(String, Object[]) | 寫入使用指定的格式信息的指定對象數(shù)組到標準輸出流的文本表示。 |
Write(Char[], Int32, Int32) | 寫的Unicode字符指定子數(shù)組到標準輸出流。 |
Write(String, Object, Object) | 寫入使用指定的格式信息,將指定對象的標準輸出流的文本表示。 |
Write(String, Object, Object, Object) | 寫入使用指定的格式信息,將指定對象的標準輸出流的文本表示。 |
Write(String, Object, Object, Object, Object) | 寫入使用指定的格式信息指定的對象和可變長度參數(shù)列表標準輸出流的文本表示。 |
WriteLine() | 寫當前行終止到標準輸出流。 |
WriteLine(Boolean) | 將指定布爾值的文本表示,后跟當前行終止,標準輸出流。 |
WriteLine(Char) | 將指定的Unicode字符,后跟當前行終止,值到標準輸出流。 |
WriteLine(Char[]) | 將指定的Unicode字符數(shù)組,后跟當前行終止,標準輸出流。 |
WriteLine(Decimal) | 將指定十進制值的文本表示,后跟當前行終止,標準輸出流。 |
WriteLine(Double) | 將指定的雙精度浮點值的文本表示,后跟當前行終止,標準輸出流。 |
WriteLine(Int32) | 將指定的32位有符號整數(shù)的文本表示,后跟當前行終止,標準輸出流。 |
WriteLine(Int64) | 將指定的64位有符號整數(shù)的文本表示,后跟當前行終止,標準輸出流。 |
WriteLine(Object) | 將指定對象的文本表示,后跟當前行終止,標準輸出流。 |
WriteLine(Single) | 將指定的單精度浮點值的文本表示,后跟當前行終止,標準輸出流。 |
WriteLine(String) | 寫入指定的字符串值,后跟當前行終止,標準輸出流。 |
WriteLine(UInt32) | 將指定的32位無符號整數(shù)的文本表示,后跟當前行終止,標準輸出流。 |
WriteLine(UInt64) | 將指定的64位無符號整數(shù)的文本表示,后跟當前行終止,標準輸出流。 |
WriteLine(String, Object) | 將指定對象的文本表示,后跟當前行終止符,使用指定的格式信息標準輸出流。 |
WriteLine(String, Object[]) | 將指定對象數(shù)組,后跟當前行終止符的文本表示,使用指定的格式信息標準輸出流。 |
WriteLine(Char[], Int32, Int32) | 寫的Unicode字符指定子數(shù)組,后跟當前行終止,標準輸出流。 |
WriteLine(String, Object, Object) | 將指定對象的文本表示,后跟當前行終止符,使用指定的格式信息標準輸出流。 |
WriteLine(String, Object, Object, Object) | 將指定對象的文本表示,后跟當前行終止符,使用指定的格式信息標準輸出流。 |
WriteLine(String, Object, Object, Object, Object) | 將指定對象和可變長度參數(shù)列表的文本表示,后跟當前行終止符,使用指定的格式信息標準輸出流。 |
以下示例演示從控制臺讀取和寫入
open System let main() = Console.Write("What's your name? ") let name = Console.ReadLine() Console.Write("Hello, {0} ", 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()
當你編譯和執(zhí)行程序,它產(chǎn)生以下輸出
What's your name? Kabir Hello, Kabir Big Greetings from TutorialsPoint and Absoulte Classes |2015-Jan-05|
System.IO命名空間包含了用于執(zhí)行基本I / O各種有用的類。
它包含了允許讀取和寫入文件和數(shù)據(jù)流,并提供基本的文件和目錄支持的類型類型或類。
類與文件系統(tǒng)的工作有用的
類與流(字節(jié)序列)工作有用的
下表顯示了一個簡要說明命名空間提供的所有類
類 | 描述 |
---|---|
BinaryReader | 讀取的原始數(shù)據(jù)類型為在特定的編碼的二進制值。 |
BinaryWriter | 以二進制寫入原始類型到一個流,并支持一個特定的編碼寫入字符串。 |
BufferedStream | 添加一個緩沖層讀取,而在另一個流寫入操作。 |
Directory | 公開用于創(chuàng)建,移動,并通過目錄和子目錄列舉的靜態(tài)方法。 |
DirectoryInfo | 公開用于創(chuàng)建,移動,并通過目錄和子目錄列舉實例方法。 |
DirectoryNotFoundException | 當一個文件或目錄的一部分,不能被發(fā)現(xiàn)時引發(fā)的異常。 |
DriveInfo | 提供了獲取信息的驅(qū)動器上。 |
DriveNotFoundException | 嘗試訪問的驅(qū)動器或共享時所引發(fā)的異常不可用。 |
EndOfStreamException | 嘗試過去流的末尾時,讀取時引發(fā)的異常。 |
ErrorEventArgs | 對于FileSystemWatcher.Error事件提供數(shù)據(jù)。 |
File | 提供在創(chuàng)建的FileStream對象的創(chuàng)建,復(fù)制,刪除,移動,和一個單一的文件的開口靜態(tài)方法,和助劑。 |
FileFormatException | 當輸入文件或理應(yīng)數(shù)據(jù)流以符合特定的文件格式規(guī)范,所引發(fā)的異常格式不正確。 |
FileInfo | 提供了創(chuàng)作的FileStream對象的創(chuàng)建,復(fù)制,刪除,移動和文件的開放性和實例方法,和艾滋病。 |
FileLoadException | 當一個托管程序集發(fā)現(xiàn)被拋出,但無法加載的異常。 |
FileNotFoundException | 當試圖訪問磁盤出現(xiàn)故障時不存在的文件時引發(fā)的異常。 |
FileStream | 圍繞公開的文件的碼流,支持同步和異步讀取和寫入操作。 |
FileSystemEventArgs | 提供數(shù)據(jù)的目錄事件 - 改變,創(chuàng)建,刪除。 |
FileSystemInfo | 為雙方提供的FileInfo和DirectoryInfo的對象的基類。 |
FileSystemWatcher | 偵聽到文件系統(tǒng)更改通知并且當一個目錄或文件目錄中的,變化引發(fā)事件。 |
InternalBufferOverflowException | 當內(nèi)部緩沖區(qū)溢出拋出的異常。 |
InvalidDataException | 當一個數(shù)據(jù)流格式無效時引發(fā)的異常。 |
IODescriptionAttribute | 設(shè)置說明引用事件,擴展,或財產(chǎn)時,可視化設(shè)計器可以顯示。 |
IOException | 當發(fā)生I / O錯誤時引發(fā)的異常。 |
MemoryStream | 創(chuàng)建一個流的后備存儲內(nèi)存。 |
Path | 執(zhí)行對包含文件或目錄路徑信息的String實例操作。這些操作在跨平臺的方式進行。 |
PathTooLongException | 當一個路徑或文件名超過系統(tǒng)定義的最大長度時引發(fā)的異常。 |
PipeException | 當一個命名管道內(nèi)發(fā)生錯誤時,拋出。 |
RenamedEventArgs | 提供對更名事件數(shù)據(jù)。 |
Stream | 提供的字節(jié)的序列的通用視圖。這是一個抽象類。 |
StreamReader | 實現(xiàn)一個TextReader的,從一個特定的編碼字節(jié)流中讀取字符。 |
StreamWriter | 實現(xiàn)了在一個特定的編碼寫入字符到一個流的TextWriter。要瀏覽此類.NET框架的源代碼,請參考源。 |
StringReader | 實現(xiàn)一個的TextReader從一個字符串讀取。 |
StringWriter | 實現(xiàn)了將一個字符串寫入信息的TextWriter的。的信息存儲在一個基本的StringBuilder。 |
TextReader | 表示一個閱讀器,可以讀取順序一系列字符。 |
TextWriter | 表示可以寫一個順序的一系列字符的作家。這是一個抽象類。 |
UnmanagedMemoryAccessor | 提供了從托管代碼非托管內(nèi)存塊的隨機訪問。 |
UnmanagedMemoryStream | 提供了獲取從托管代碼非托管的內(nèi)存塊。 |
WindowsRuntimeStorageExtensions | 包含在Windows運行時的IStorageFile和IStorageFolder接口開發(fā)Windows Store應(yīng)用程序時,擴展方法。 |
WindowsRuntimeStreamExtensions | 包含在.NET的Windows Store應(yīng)用程序在Windows運行時流和管理流之間進行轉(zhuǎn)換的擴展方法。 |
下面的示例創(chuàng)建一個名為test.txt文件,寫有一條消息,從文件中讀取文本,并打印在控制臺上。
注:要做到這一點所需的代碼量是出奇的少
open System.IO // Name spaces can be opened just as modules File.WriteAllText("test.txt", "Hello There Welcome to: Tutorials Point") let msg = File.ReadAllText("test.txt") printfn "%s" msg
當你編譯和執(zhí)行程序,它產(chǎn)生以下輸出
Hello There Welcome to: Tutorials Point
更多建議: