編程語言:不同的編程語言是如何讀寫數(shù)據(jù)的?
每種編程語言都有其獨特的完成任務(wù)的方式,這也說明了為什么有這么多語言可供選擇。
在 Jim Hall 的《?不同的編程語言如何完成相同的事情?》文章中,他演示了 13 種不同的語言如何使用不同的語法來完成同一個任務(wù)。經(jīng)驗是,編程語言往往有很多相似之處。一旦你了解了一種編程語言,你就可以通過理解它的語法和結(jié)構(gòu)來學(xué)習(xí)另一種。

本著同樣的精神,Jim 的文章比較了不同編程語言如何讀寫數(shù)據(jù)。無論數(shù)據(jù)來自配置文件還是用戶創(chuàng)建的文件,在存儲設(shè)備上處理數(shù)據(jù)都是程序員的常見任務(wù)。以這種方式涵蓋所有編程語言是不切實際的,但最近的?Opensource.com?系列文章提供了對這些編程語言采用的不同方法的深入了解:
C
C++
Java
Groovy
Lua
Bash
Python
讀寫數(shù)據(jù)
用計算機讀寫數(shù)據(jù)的過程和你在現(xiàn)實生活中讀寫數(shù)據(jù)的過程類似。要訪問書中的數(shù)據(jù),你首先要打開它,然后閱讀單詞或?qū)⑸~寫入書中,然后合上書。
當(dāng)程序需要從文件中讀取數(shù)據(jù)時,你向程序傳入一個文件位置,然后計算機將該數(shù)據(jù)讀入內(nèi)存中并解析它。同樣,當(dāng)程序需要將數(shù)據(jù)寫入文件時,計算機會將新數(shù)據(jù)放入系統(tǒng)的內(nèi)存寫入緩沖區(qū),然后將其同步到存儲設(shè)備上的文件中。
下面是這些操作的一些偽代碼:
在內(nèi)存中加載文件。
讀取文件內(nèi)容,或?qū)?shù)據(jù)寫入文件。
關(guān)閉文件。
從文件中讀取數(shù)據(jù)
從?Opensource.com?系列文章的語言中,你可以看到讀取文件的三種趨勢。
C
在 C 語言中,打開文件可能涉及檢索單個字符(直到?EOF?指示符,表示文件結(jié)束)或一個數(shù)據(jù)塊,具體取決于你的需求和方法。根據(jù)你的目標(biāo),它可能感覺像一個主要是手工的過程,但這正是其他語言所模仿的。

你還可以選擇將文件的某些部分加載到系統(tǒng)緩沖區(qū)中,然后在緩沖區(qū)外工作。

C++
C++ 簡化了一些步驟,允許你將數(shù)據(jù)解析為字符串。

Java
Java 和 Groovy 類似于 C++。它們使用名為?Scanner?的類來設(shè)置數(shù)據(jù)流或?qū)ο?,這樣就會包含你選擇的文件內(nèi)容。你可以通過標(biāo)記(字節(jié)、行、整數(shù)等)掃描文件。

Groovy

Lua
Lua 和 Python 進(jìn)一步抽象了整個過程。你不必有意識地創(chuàng)建數(shù)據(jù)流,你只需給一個變量賦值為?open?函數(shù)的返回值,然后解析該變量的內(nèi)容。這種方式快速,最簡且容易。

Python

向文件中寫入數(shù)據(jù)
就寫代碼來說,寫入是讀取的逆過程。因此,將數(shù)據(jù)寫入文件的過程與從文件中讀取數(shù)據(jù)基本相同,只是使用了不同的函數(shù)。
C
在 C 語言中,你可以使用?fputc?函數(shù)將字符寫入文件:
fputc(ch, outfile);
或者,你可以使用?fwrite?將數(shù)據(jù)寫入緩沖區(qū)。
fwrite(buffer, sizeof(char), buffer_length, outfile);
C++
因為 C++ 使用?ifstream?庫為數(shù)據(jù)打開緩沖區(qū),所以你可以像 C 語言那樣將數(shù)據(jù)寫入緩沖區(qū)(C++ 庫除外)。
std::cout<< buffer <
Java
在 Java 中,你可以使用?FileWriter?類來創(chuàng)建一個可以寫入數(shù)據(jù)的對象。它的工作方式與?Scanner?類非常相似,只是方向相反。
FileWriter myFileWriter =newFileWriter("example.txt",true);
myFileWriter.write("Hello world\n");
myFileWriter.close();
Groovy
類似地,Groovy 使用?FileWriter?,但使用了稍微 “groovy” 的語法。

Lua
Lua 和 Python 很相似,都使用名為?open?的函數(shù)來加載文件,?writer?函數(shù)來寫入數(shù)據(jù),?close?函數(shù)用于關(guān)閉文件。

Python
myFile =open('example.txt','w')
myFile.write('hello world')
myFile.close()
File 模式
許多語言在打開文件時會指定一個“模式”。模式有很多,但這是常見的定義:
w?表示寫入
r?表示讀取
r+?表示可讀可寫
a?表示追加
某些語言,例如 Java 和 Groovy,允許你根據(jù)用于加載文件的類來確定模式。
無論編程語言以何種方式來確定文件模式,你都需要確保你是在?追加?數(shù)據(jù),除非你打算用新數(shù)據(jù)覆蓋文件。編程語言不像文件選擇器那樣,沒有內(nèi)置的提示來警告你防止數(shù)據(jù)丟失。
新語言和舊把戲
每種編程語言都有其獨特完成任務(wù)的方式,這就是為什么有這么多語言可供選擇。你可以而且應(yīng)該選擇最合適你的語言。但是,你一旦了解了編程的基本結(jié)構(gòu),你可以隨意嘗試其他語言,而不必?fù)?dān)心不知道如何完成基本任務(wù)。通常情況下,實現(xiàn)目標(biāo)的途徑是相似的,所以只要你牢記基本概念,它們就很容易學(xué)習(xí)。
via:?https://opensource.com/article/21/7/programming-read-write

另外,對現(xiàn)在我們的大多數(shù)朋友來說還是學(xué)編程技術(shù)最重要!栽一棵樹最好的時間是十年前,其次是現(xiàn)在。對于準(zhǔn)備學(xué)習(xí)編程的小伙伴,如果你想更好的提升你的編程核心能力(內(nèi)功)不妨從現(xiàn)在開始!
微信公眾號:C語言編程學(xué)習(xí)基地
整理分享(多年學(xué)習(xí)的源碼、項目實戰(zhàn)視頻、項目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!
