成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

不同的編程語言是如何讀寫數據的

開發 后端
每種編程語言都有其獨特的完成任務的方式,這也說明了為什么有這么多語言可供選擇。

[[412254]]

每種編程語言都有其獨特的完成任務的方式,這也說明了為什么有這么多語言可供選擇。

在 Jim Hall 的《不同的編程語言如何完成相同的事情》文章中,他演示了 13 種不同的語言如何使用不同的語法來完成同一個任務。經驗是,編程語言往往有很多相似之處。一旦你了解了一種編程語言,你就可以通過理解它的語法和結構來學習另一種。

本著同樣的精神,Jim 的文章比較了不同編程語言如何讀寫數據。無論數據來自配置文件還是用戶創建的文件,在存儲設備上處理數據都是程序員的常見任務。以這種方式涵蓋所有編程語言是不切實際的,但最近的 Opensource.com 系列文章提供了對這些編程語言采用的不同方法的深入了解:

讀寫數據

用計算機讀寫數據的過程和你在現實生活中讀寫數據的過程類似。要訪問書中的數據,你首先要打開它,然后閱讀單詞或將生詞寫入書中,然后合上書。

當程序需要從文件中讀取數據時,你向程序傳入一個文件位置,然后計算機將該數據讀入內存中并解析它。同樣,當程序需要將數據寫入文件時,計算機會將新數據放入系統的內存寫入緩沖區,然后將其同步到存儲設備上的文件中。

下面是這些操作的一些偽代碼:

  1. 在內存中加載文件。
  2. 讀取文件內容,或將數據寫入文件。
  3. 關閉文件。

從文件中讀取數據

從 Opensource.com 系列文章的語言中,你可以看到讀取文件的三種趨勢。

C

在 C 語言中,打開文件可能涉及檢索單個字符(直到 EOF 指示符,表示文件結束)或一個數據塊,具體取決于你的需求和方法。根據你的目標,它可能感覺像一個主要是手工的過程,但這正是其他語言所模仿的。

  1. FILE *infile;
  2. int ch;
  3.  
  4. infile = fopen(argv[1], "r");
  5. do {
  6. ch = fgetc(infile);
  7. if (ch != EOF) {
  8. printf("%c", ch);
  9. }
  10. } while (ch != EOF);
  11.  
  12. fclose(infile);

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

  1. FILE *infile;
  2. char buffer[300];
  3. infile = fopen(argv[1], "r");
  4.  
  5. while (!feof(infile)) {
  6. size_t buffer_length;
  7. buffer_length = fread(buffer, sizeof(char), 300, infile);
  8. }
  9.  
  10. printf("%s", buffer);
  11. fclose(infile);

C++

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

  1. std::string sFilename = "example.txt";
  2.  
  3. std::ifstream fileSource(sFilename);
  4. std::string buffer;
  5.  
  6. while (fileSource >> buffer) {
  7. std::cout << buffer << std::endl;
  8. }

Java

Java 和 Groovy 類似于 C++。它們使用名為 Scanner 的類來設置數據流或對象,這樣就會包含你選擇的文件內容。你可以通過標記(字節、行、整數等)掃描文件。

  1. File myFile = new File("example.txt");
  2.  
  3. Scanner myScanner = new Scanner(myFile);
  4. while (myScanner.hasNextLine()) {
  5. String line = myScanner.nextLine();
  6. System.out.println(line);
  7. }
  8.  
  9. myScanner.close();

Groovy

  1. def myFile = new File('example.txt')
  2.  
  3. def myScanner = new Scanner(myFile)
  4. while (myScanner.hasNextLine()) {
  5. def line = myScanner.nextLine()
  6. println(line)
  7. }
  8.  
  9. myScanner.close()

Lua

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

  1. myFile = io.open('example.txt', 'r')
  2.  
  3. lines = myFile:read("*all")
  4. print(lines)
  5.  
  6. myFile:close()

Python

  1. f = open('example.tmp', 'r')
  2.  
  3. for line in f:
  4. print(line)
  5.  
  6. f.close()

向文件中寫入數據

就寫代碼來說,寫入是讀取的逆過程。因此,將數據寫入文件的過程與從文件中讀取數據基本相同,只是使用了不同的函數。

C

在 C 語言中,你可以使用 fputc 函數將字符寫入文件:

  1. fputc(ch, outfile);

或者,你可以使用 fwrite 將數據寫入緩沖區。

fwrite(buffer, sizeof(char), buffer_length, outfile);

C++

因為 C++ 使用 ifstream 庫為數據打開緩沖區,所以你可以像 C 語言那樣將數據寫入緩沖區(C++ 庫除外)。

  1. std::cout << buffer << std::endl;

Java

在 Java 中,你可以使用 FileWriter 類來創建一個可以寫入數據的對象。它的工作方式與 Scanner 類非常相似,只是方向相反。

  1. FileWriter myFileWriter = new FileWriter("example.txt", true);
  2. myFileWriter.write("Hello world\n");
  3. myFileWriter.close();

Groovy

類似地,Groovy 使用 FileWriter,但使用了稍微 “groovy” 的語法。

  1. new FileWriter("example.txt", true).with {
  2. write("Hello world\n")
  3. flush()
  4. }

Lua

Lua 和 Python 很相似,都使用名為 open 的函數來加載文件,writer 函數來寫入數據,close 函數用于關閉文件。

  1. myFile = io.open('example.txt', 'a')
  2. io.output(myFile)
  3. io.write("hello world\n")
  4. io.close(myFile)

Python

  1. myFile = open('example.txt', 'w')
  2. myFile.write('hello world')
  3. myFile.close()

File 模式

許多語言在打開文件時會指定一個“模式”。模式有很多,但這是常見的定義:

  • w 表示寫入
  • r 表示讀取
  • r+ 表示可讀可寫
  • a 表示追加

某些語言,例如 Java 和 Groovy,允許你根據用于加載文件的類來確定模式。

無論編程語言以何種方式來確定文件模式,你都需要確保你是在 追加 數據,除非你打算用新數據覆蓋文件。編程語言不像文件選擇器那樣,沒有內置的提示來警告你防止數據丟失。

新語言和舊把戲

每種編程語言都有其獨特完成任務的方式,這就是為什么有這么多語言可供選擇。你可以而且應該選擇最合適你的語言。但是,你一旦了解了編程的基本結構,你可以隨意嘗試其他語言,而不必擔心不知道如何完成基本任務。通常情況下,實現目標的途徑是相似的,所以只要你牢記基本概念,它們就很容易學習。 

 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2024-04-24 12:03:20

2018-11-11 15:29:13

大數據語言Java

2022-09-27 08:01:48

遞歸函數GScript

2010-03-11 14:13:20

Python編程

2011-08-11 10:12:11

2022-06-08 12:29:24

編程語言JavaPython

2021-05-28 05:34:06

Golang語言編程

2020-06-05 08:31:29

編程語言RPython

2018-10-15 15:42:04

開發工具編程語言源代碼

2011-06-20 08:48:17

編程語言

2020-11-12 07:00:50

JavaScript前端編程語言

2022-12-29 17:25:38

2018-11-21 09:33:01

2017-11-28 16:57:18

2015-10-29 09:36:31

高端編程語言

2017-09-12 11:02:51

Python編程語言

2021-09-29 15:30:20

安全工具PackageDNA軟件包安全性

2019-07-17 13:45:42

網絡安全防火墻軟件

2017-12-27 14:52:21

JSGo編程語言

2021-12-02 10:16:10

機器人編程語言計算機語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人欧美一区二区三区在线播放 | 成人免费观看视频 | 久热m3u8 | 日本理论片好看理论片 | 日韩精品视频中文字幕 | 午夜国产羞羞视频免费网站 | 免费黄色a视频 | 欧美黄视频 | 日韩成人在线观看 | 操人网站| 这里精品 | 亚洲成人日韩 | caoporon| 国产黄色大片在线免费观看 | 国产激情91久久精品导航 | 国产精品视频一二三区 | 91社影院在线观看 | 成人在线视频一区 | 久久久欧洲 | 福利视频一区二区 | 美美女高清毛片视频免费观看 | 夜夜操操操 | 国产亚洲精品a | 日韩国产精品一区二区三区 | 国产精品中文字幕在线 | 久久久久久国产精品 | 精品久久免费 | 午夜精品久久久久久久久久久久 | 7777奇米影视 | 日韩久久久久久久久久久 | 日本人做爰大片免费观看一老师 | av天天操 | 男人的天堂一级片 | 亚洲精品一二三区 | 日本一区二区三区免费观看 | 日韩一区二区三区精品 | 日韩中文av在线 | 亚洲一区二区三区福利 | 日本成人中文字幕 | 中文字幕av第一页 | 久久精品亚洲 |