国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux下文件的創(chuàng)建寫入讀取編程

這篇具有很好參考價值的文章主要介紹了Linux下文件的創(chuàng)建寫入讀取編程。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

? ? ? ? 在linux下操作一個文件,首先要保證文件的存在(不存在就創(chuàng)建),接著打開文件(打開成功)并得到文件描述符,接著在進行讀寫操作,最后還需要關閉文件。如果我們對文件進行讀寫之后不關閉文件,而直接關閉我們的編譯器,可能會造成文件損壞。

? ? ? ? ?文件描述符其實就是我們使用open函數(shù)后一個返回值,我們一般用fd表示。如果你成功的打開文件,open就會返回一個非負值,我們讓fd等于這個非負值;如果你打開文件失敗,open就會返回-1,那么fd就被賦值為-1。

? ? ? ? ?如果說我們的文件夾是一本書,文件是書本的章節(jié),那么文件描述符就相當于我們書本的索引(就是一個目錄,標示了你想要找的東西的位置)。當你想要讀寫文件的內(nèi)容時,你需要利用相應的API函數(shù),而這些API函數(shù)的其中一個參數(shù)就是文件描述符。API函數(shù)通過“文件描述符”這個索引就可以找到文件并對該文件進行操作。

一、Linux常用操作命令

Ctrl Alt t

開啟命令窗口

xrandr

顯示所有的分辨率

xrandr -s 分辨率

設置自己想要的分辨率

Ctrl l

清屏

Ctrl shift +或者Ctrl +

放大文字

Ctrl -

縮小文字

pwd

顯示當前文件路徑

ls

顯示當前路徑下有哪些文件(不包含隱藏文件)

ls -a

顯示當前路徑下有哪些文件(包含隱藏文件)

ls -l

顯示當前路徑下文件的創(chuàng)建時間大小及用戶使用權(quán)限

mkdir 文件夾名

創(chuàng)建文件夾

rm -r 文件夾名

刪除文件夾

rm 文件名

刪除文件

cd 文件夾名

進入文件夾

cd ..

返回上一級目錄

mv *c 新文件夾名

把當前目錄下名字以c結(jié)尾的文件或文件夾剪切到新文件夾里

mv 文件名1 文件名2

把文件1的名字命名為文件2

mv 文件夾名1 文件夾名2

把文件夾1的名字命名為文件夾2

cp 文件1 文件2

把文件1的內(nèi)容復制到文件2

cp -r 文件夾1 文件夾2

把文件夾1的內(nèi)容復制到文件夾2

vi 文件名.c

創(chuàng)建.c文件,進入后默認為命令行模式,按i進入輸入模式;按Esc由輸入模式進入命令模式。接著輸入:wq回車,保存退出。

gcc 文件名.c

編譯該.c文件,默認生成名為a.out的可運行文件

./a.out

運行a.out文件

gcc 文件名.c -o 新文件名

編譯該.c文件,生成以新文件命名的可運行文件

./新文件名

運行新文件名的文件

vim -r 文件名

打開上一次奔潰的文件

vimdiff 文件名1 文件名2

在同一顯示屏下比較兩個文件,并顯示不同的部分

clear

清屏

ps -aux

查看所有進程

cat 已有文件名

查看文件內(nèi)容

cat > 新文件名

創(chuàng)建新文件,可以再文件里寫入內(nèi)容,按ctrl c退出

ps -aux|grep 類型名

查看這一類型的進程

top

查看任務管理器

getpid

獲取自身進程id號

getppid

獲取父進程id號

二、相關API函數(shù)

1.創(chuàng)建/打開文件

int open(const char *pathname, int flags);

int open(const char *pathname, int flags, mode_t mode);

int creat(const char *pathname, mode_t mode);

參數(shù)

Pathname:要打開的文件名字(包含路徑,缺失為當前路徑)

Flags:

必須要有的選項,三選一

O_RDONLY 只讀打開 ??O_WRONLY 只寫打開 ??O_RDWR可讀可寫打開

備用常用選項,可用“|”疊加

O_CREAT:若文件不存在則創(chuàng)建該文件。使用后,要搭配第三個參數(shù)mode,以此來說明該新文件的存取許可權(quán)限。

O_EXCL:如果同時指定了O_CREAT,并且文件已經(jīng)存在則打開文件失敗,返回-1。

O_APPEND:每次書寫都加到文章末尾

O_TRUNC:如果該文件已經(jīng)存在,并且是一個常規(guī)文件,并且訪問模式允許寫入(即,是O_RDWR或O_WRONLY)它將被截斷為長度0。

Mode:在flag中使用了O_CREAT標志后,可以使用該參數(shù)設置待創(chuàng)建文件的訪問權(quán)限

關于mode的參數(shù)補充

每個Linux文件具有四種訪問權(quán)限:可讀(r)、可寫(w)、可執(zhí)行(x)和無權(quán)限(-)。

利用ls -l命令可以看到某個文件或目錄的權(quán)限,它以顯示數(shù)據(jù)的第一個字段為準。第一個字段由10個字符組成,如 -rwxr-xr-x,我們把它劃分為4部分

第1位為第一部分,表示文件類型,-表示文件,d表示目錄

第2-4位為第二部分,表示文件所有者的權(quán)限,u權(quán)限

第5-7位為第三部分,表示文件所有者所屬組成員的權(quán)限,g權(quán)限

第8-10位為第四部分,表示所有者所屬組之外的用戶的權(quán)限,o權(quán)限 ?

2-10位的權(quán)限總和有時稱為a權(quán)限

以上例子中,表示這是一個文件(非目錄),文件所有者具有讀、寫和執(zhí)行的權(quán)限,所有者所屬組成員和所屬組之外的用戶具有讀和執(zhí)行的權(quán)限而沒有寫的權(quán)限。

如果我們使用int open(const char *pathname, int flags, mode_t mode)函數(shù),參數(shù)mode是數(shù)字,那我們?nèi)绾斡脭?shù)字表示第二第三第四部分的權(quán)限呢?

所謂數(shù)字表示法,是指將r、w和x分別用4、2、1來代表,沒有授予權(quán)限的(即-)則為0,

比如我們剛剛舉得例子rwxr-xr-x,它的2到10位一共三個部分的權(quán)限,我們劃分來看。

第二部分是rwx,對應數(shù)字是421,加起來就是7;第三部分是r-x,對應數(shù)字是401,加起來就是5;第四部分是rwx,對應數(shù)字是401,加起來就是5。所以如果mode用數(shù)字表示就是755,具體的例子,下面的程序再說。

如果打開成功,返回新的文件描述符(一個非負整數(shù)),如果發(fā)生錯誤,一般返回-1。

與②API函數(shù)的區(qū)別在有無mode,而需不需要mode這個參數(shù),就要看第二個參數(shù)里是否包含O_CREAT。如果有O_CREAT,就要包含mode這個參數(shù);如果沒有,就不用包含這個參數(shù)。因為如果包含O_CREAT同時文件沒有,那么文件就需要被創(chuàng)建,被創(chuàng)建的同時還需要規(guī)定文件的訪問權(quán)限,這就需要mode的參與。

這個API函數(shù)可以直接去輸入你想要的文件名,以及權(quán)限,就可以實現(xiàn)文件的創(chuàng)建了

2.寫入文件

ssize_t write(int fd, const void *buf, size_t count);

參數(shù):

fd:文件打開后對應的文件描述符

buf:寫入內(nèi)容緩沖區(qū)

count:寫入文件的大小

如果寫入成功,則返回寫入的字節(jié)數(shù)。如果出現(xiàn)錯誤,則返回-1,并設置errno以指示錯誤的原因。

3.讀文件

ssize_t read(int fd, void *buf, size_t count);

參數(shù):

fd:文件打開后對應的文件描述符

buf:讀內(nèi)容緩沖區(qū)

count:讀入文件的大小

如果寫入成功,則返回讀的字節(jié)數(shù)。如果出現(xiàn)錯誤,則返回-1,并設置errno以指示錯誤的原因。

4.文件光標移動

off_t lseek(int fd, off_t offset, int whence);

參數(shù):

fd:文件打開后對應的文件描述符

offset:相對于whence偏移的位置。0,不偏移;正整數(shù),向右偏移對應的大小;負整數(shù),向左偏移對應的大小。

whence:光標起始位置,一共有三個選項,如下

SEET_SET???????? 文件開頭

SEET_CUR???????? 文件當前位置

SEET_END???????? 文件尾部

如果成功,則返回相對于文件頭的偏移量。如果出現(xiàn)錯誤,則返回-1。如果我們設置為

lseek(fd,0,SEET_END)就可以利用他的返回值來表示文件的大小了。

5.關閉文件

⑦int close(int fd);

參數(shù)

fd:文件打開后對應的文件描述符

關閉成功返回零。如果出現(xiàn)錯誤,則返回-1,并適當?shù)卦O置errno。

三、API函數(shù)的功能驗證

1.文件創(chuàng)建的驗證

?? 在當前目錄下,我們是沒有file1文件的,這時候我們建立demo1.c,使用int open(const char *pathname, int flags)無法打開file1。如下圖

當前文件下無file1

Linux下文件的創(chuàng)建寫入讀取編程,linux,文件操作

demo1.c的代碼

Linux下文件的創(chuàng)建寫入讀取編程,linux,文件操作

執(zhí)行完demo1.c,文件描述符fd的返回值是-1,說明打開文件失敗

Linux下文件的創(chuàng)建寫入讀取編程,linux,文件操作

建立demo2.c使用int open(const char *pathname, int flags, mode_t mode)先進行判斷,如果沒有file1,顯示失敗時的文件描述符,接著建立file1后在顯示正確的文件描述符;如果有file1,直接顯示正確的文件描述符。

demo2.c代碼,

Linux下文件的創(chuàng)建寫入讀取編程,linux,文件操作

執(zhí)行完demo2.c后的情況,可以看到file1從無到有,通過O_CREAT實現(xiàn)了file1的創(chuàng)建,最后的文件描述符為正值。

Linux下文件的創(chuàng)建寫入讀取編程,linux,文件操作

Linux下文件的創(chuàng)建寫入讀取編程,linux,文件操作

當前路徑下輸入ls -l可以查看當前路徑下所有文件的權(quán)限以及狀態(tài)。在demo2.c里我們將open函數(shù)的第三個參數(shù)mode設置為0600,可以看到對應的file1是對應的權(quán)限是

-rw-------,結(jié)合我們上文講的數(shù)字表示文件權(quán)限就可以知道0600就代表者第二部分擁有可讀可寫的權(quán)限

Linux下文件的創(chuàng)建寫入讀取編程,linux,文件操作

2.文件寫入驗證

首先我們刪除file1,在demo3.c里使用write函數(shù),寫入yangdong is handsome

demo3.c的代碼如下

Linux下文件的創(chuàng)建寫入讀取編程,linux,文件操作

執(zhí)行完demo3.c后結(jié)果如下圖所示

Linux下文件的創(chuàng)建寫入讀取編程,linux,文件操作

打開file1后可以看到文件顯示的內(nèi)容

Linux下文件的創(chuàng)建寫入讀取編程,linux,文件操作

3.文件讀取的驗證

在demo3.c的基礎上修該代碼,首先我們要通過文件描述符的值驗證file1中是否寫成功入了內(nèi)容。當成功寫入后,我們要調(diào)用lseek()函數(shù)把文件光標置前,不然我們讀取內(nèi)容的時候是從文件的末尾讀取的,但是你可以想象,既然文件光標都到文章末尾了,都沒東西了,那你還讀啥?讀空氣啊。所以當你往文章里寫好東西之后,如果你想要讀,記得把文件光標置前。

我們依舊先刪除file1,在demo4.c里使用write,lseek,read函數(shù),寫入yangdong is handsome

demo4.c的代碼如下

Linux下文件的創(chuàng)建寫入讀取編程,linux,文件操作

Linux下文件的創(chuàng)建寫入讀取編程,linux,文件操作

執(zhí)行完demo4.c后的現(xiàn)象,我們可以看到寫入多少,讀出多少;寫入什么,讀出什么。

Linux下文件的創(chuàng)建寫入讀取編程,linux,文件操作

4.open函數(shù)打開文件中參數(shù)flag中可搭配選項的驗證

O_EXCL功能的驗證

file1此時已存在,我們可以看到demo5.c的open函數(shù)中同時加入了O_CREAT和O_EXCL,這時候文件打開失敗,文件描述符被賦值為-1。

Linux下文件的創(chuàng)建寫入讀取編程,linux,文件操作

demo5.c的代碼

Linux下文件的創(chuàng)建寫入讀取編程,linux,文件操作

demo5.c的運行結(jié)果

Linux下文件的創(chuàng)建寫入讀取編程,linux,文件操作

O_APPEND的驗證

現(xiàn)在file1里面的內(nèi)容是yangdong is handsome,如果想在文件中繼續(xù)寫入123456。但是我們在open函數(shù)里不加參數(shù)O_APPEND和加O_APPEND有啥區(qū)別呢,下面我們來看一下。

open函數(shù)里不加O_APPEND

原文件內(nèi)容如下

Linux下文件的創(chuàng)建寫入讀取編程,linux,文件操作

代碼如下

Linux下文件的創(chuàng)建寫入讀取編程,linux,文件操作

運行完之后file1的內(nèi)容如下

Linux下文件的創(chuàng)建寫入讀取編程,linux,文件操作

我們可以看到,不過open函數(shù)里不加O_APPEND,那么我們寫入文件的內(nèi)容就會寫入多少,覆蓋原文件多少。

現(xiàn)在在現(xiàn)有file1的基礎上驗證open函數(shù)里加O_APPEND的情況

原文件內(nèi)容如下

Linux下文件的創(chuàng)建寫入讀取編程,linux,文件操作

代碼如下

Linux下文件的創(chuàng)建寫入讀取編程,linux,文件操作

運行結(jié)果如下,我們可以看到open函數(shù)里加O_APPEND后,寫入的內(nèi)容是從文件末尾新加進去,并沒有覆蓋原文件內(nèi)容

Linux下文件的創(chuàng)建寫入讀取編程,linux,文件操作

驗證O_TRUNC:

現(xiàn)在file1的內(nèi)容如下

Linux下文件的創(chuàng)建寫入讀取編程,linux,文件操作

當我們在open函數(shù)中加入?yún)?shù)O_TRUNC以后,我們往文件中寫入內(nèi)容,原文件的內(nèi)容會被全部刪除,只顯示我們新寫入的東西。

代碼如下

Linux下文件的創(chuàng)建寫入讀取編程,linux,文件操作

運行后file1中的內(nèi)容如下,可以看到原來的內(nèi)容已經(jīng)被替換成了abcdefg文章來源地址http://www.zghlxwxcb.cn/news/detail-799486.html

到了這里,關于Linux下文件的創(chuàng)建寫入讀取編程的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Java 文件處理完全指南:創(chuàng)建、讀取、寫入和刪除文件詳細解析

    文件處理是任何應用程序的重要部分。Java 提供了許多用于創(chuàng)建、讀取、更新和刪除文件的方法。 Java 文件處理 Java 中的文件處理主要通過 java.io 包中的 File 類完成。該類允許我們處理文件,包括創(chuàng)建、讀取、寫入和刪除文件。 要使用 File 類,我們首先需要創(chuàng)建該類的對象,

    2024年03月18日
    瀏覽(22)
  • Unity3D操作數(shù)據(jù)之Txt文檔操作(創(chuàng)建、讀取、寫入、修改)

    Unity3D操作數(shù)據(jù)之Txt文檔操作(創(chuàng)建、讀取、寫入、修改)

    Unity3D操作數(shù)據(jù)之Txt文檔操作(創(chuàng)建、讀取、寫入、修改) 其實讀取Txt文檔非常簡單、也不需要導入 插件 ,僅需引入相應的 命名空間 即可。 命名空間: using System.IO 要注意的一點是,文檔格式設置為UTF-8,不然中文可能顯示不太正確。 使用寫入語句會自動創(chuàng)建對應的文檔 使用

    2024年02月02日
    瀏覽(65)
  • Unity3D操作數(shù)據(jù)之Excel表操作(創(chuàng)建、讀取、寫入、修改)

    Unity3D操作數(shù)據(jù)之Excel表操作(創(chuàng)建、讀取、寫入、修改)

    叨嘮兩句: 首先使用Excel需要 導入插件 ,其次在 程序運行 期間不要打開對應的Excel文件 其次相對于一些程序使用Excel比使用數(shù)據(jù)庫更具有優(yōu)勢 讀取主要使用 Epplus 插件,后續(xù)會推出關于Epplus的 AP I講解 讀取Excel文件,需要導入一些dll文件,才能進行操作Excel數(shù)據(jù): 如果打包

    2024年02月05日
    瀏覽(28)
  • Python08--文件讀取及寫入操作

    Python08--文件讀取及寫入操作

    有些時候我們在處理數(shù)據(jù)之后就會想將我們的數(shù)據(jù)保存到文件中,實現(xiàn)數(shù)據(jù)的持久化。而不僅僅是輸出到我們的集成開發(fā)環(huán)境的控制臺上(直接打印在控制臺上并不能夠?qū)崿F(xiàn)保存我們數(shù)據(jù)的功能,只要我們的集成開發(fā)環(huán)境已關閉,或者是電腦關機,那么我們打印出來的數(shù)據(jù)也

    2024年02月05日
    瀏覽(19)
  • Python操作寫入/讀取csv文件

    Python操作寫入/讀取csv文件

    網(wǎng)絡工程師Python數(shù)據(jù)存儲(第1節(jié),CSV文件) 網(wǎng)絡自動化運維演進的一個方向大致過程:網(wǎng)絡工程師從關注配置制作腳本,完成后上設備刷配置,慢慢地演化為網(wǎng)絡工程師關注和確定設備配置的某些重要控制參數(shù),而把制作腳本任務交給Jinja2等去渲染生成,把下發(fā)腳本工作交

    2024年02月03日
    瀏覽(93)
  • 日志審計系統(tǒng)Agent項目創(chuàng)建——讀取日志文件(Linux版本)

    日志審計系統(tǒng)Agent項目創(chuàng)建——讀取日志文件(Linux版本)

    ??緊接著上一篇的分享,繼續(xù)做日志文件的讀取,點擊連接即可 日志文件初始化 https://blog.csdn.net/wjl990316fddwjl/article/details/135553238 完結(jié)?。。。?/p>

    2024年01月22日
    瀏覽(24)
  • C++對txt文件的寫入讀取操作

    C++對txt文件的寫入讀取操作

    摘自c++中文網(wǎng) ifstream 是輸入文件流(就是通過它定義的對象獲取文件中的內(nèi)容) ofstream 是輸出文件流(將內(nèi)容寫入文件) 注意 :要使用輸入輸出文件流要包含頭文件 #includefstream 首先要用 ofstream 定義一個輸入對象 ofstream outf; 這里的outf可以自定義 接著用 outf.open(文件路徑) 打

    2024年02月13日
    瀏覽(32)
  • uniapp安卓讀取或?qū)懭雝xt文件,創(chuàng)建文件或文件夾,獲取手機內(nèi)置存儲根路徑

    原理:利用 H5plus 的 native ,引入 java 類來進行處理。 uniapp開發(fā)記錄

    2024年02月11日
    瀏覽(27)
  • Linux :: 文件內(nèi)容操作【5】:echo 指令 與 輸入重定向、輸出重定向、追加重定向在文件內(nèi)容寫入中的簡單用法!

    前言:本篇是 Linux 基本操作篇章的內(nèi)容! 筆者使用的環(huán)境是基于騰訊云服務器:CentOS 7.6 64bit。 學習集: C++ 入門到入土?。?!學習合集 Linux 從命令到網(wǎng)絡再到內(nèi)核!學習合集 說明:此處結(jié)合 「echo 指令」 提前引入 「重定向」 及 「管道」 的簡單用法,深入的 「重定向」

    2024年02月01日
    瀏覽(23)
  • ubuntu學習(四)----文件寫入操作編程

    ubuntu學習(四)----文件寫入操作編程

    ssize_t write(int fd,const void*buf,size_t count); 參數(shù)說明: ? fd:是文件描述符(write所對應的是寫,即就是1) ? buf:通常是一個字符串,需要寫入的字符串 ? count:是每次寫入的字節(jié)數(shù) 返回值: ?成功:返回寫入的字節(jié)數(shù) ?失?。悍祷?1并設置errno ? ps: 寫常規(guī)文件時,write的返回值

    2024年02月11日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包