版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第4章文件操作4.1文件的基本概念4.2順序文件操作4.3隨機文件操作4.4二進制文件操作思考題
4.1文件的基本概念
在前面的程序中,所處理的數(shù)據(jù)都是直接寫在程序中,或在程序運行時通過鍵盤輸入的,程序處理的結(jié)果由屏幕輸出。當程序需要處理大量的數(shù)據(jù)時,就不可能采用這種方法。程序中的數(shù)據(jù)在運行結(jié)束后就會從內(nèi)存中消失,再次運行程序時不會出現(xiàn),因此有必要將這些數(shù)據(jù)通過文件的形式保存起來。下面將主要講述文件的基本概念。4.1.1文件與流的概念
文件是存儲在外部介質(zhì)上的用文件名標識的數(shù)據(jù)的集合。其中外部介質(zhì)主要是硬盤,也可以是光盤、優(yōu)盤、軟盤等。通常情況下,大量的數(shù)據(jù)都是以文件的形式存放的,每個操作系統(tǒng)都提供相應的文件系統(tǒng)來對文件進行存取。每個文件應有一個包含設(shè)備和路徑信息的文件名。
文件只與信息的輸入和輸出操作相關(guān),而這些輸入和輸出是串行序列形式,于是人們將文件的概念抽象為“流”。流是程序設(shè)計對I/O系統(tǒng)中文件的抽象。流具有方向性,分為輸入流和輸出流,并分別稱為源和匯。前面章節(jié)中已經(jīng)使用的cin和cout就是流對象,分別稱為標準輸入流對象和標準輸出流對象,“<<”和“>>”表示數(shù)據(jù)流動的方向。對文件進行輸入輸出操作,必須通過“打開文件”的操作將一個文件和一個流聯(lián)系起來,也就是構(gòu)造輸入輸出文件流對象。一旦建立了聯(lián)系,以后對該流的訪問就是對該文件的訪問,也是對一個具體設(shè)備的訪問??梢酝ㄟ^“關(guān)閉文件”的操作斷開它們之間的聯(lián)系。4.1.2文件及其結(jié)構(gòu)
一個文件通常是由若干個記錄組成的,而一個記錄中往往又包含了若干個數(shù)據(jù)項。
1.記錄
記錄是電腦處理數(shù)據(jù)的基本單位,它由若干個相互關(guān)聯(lián)的數(shù)據(jù)項組成,數(shù)據(jù)項是文件中最基本的不可分的數(shù)據(jù)單位。記錄一般具有相同的性質(zhì)和結(jié)構(gòu)。例如:進行通訊錄管理時,每個人的信息組成一個記錄,該記錄由序號、姓名、性別、生日、電話、郵箱等數(shù)據(jù)項組成,如下所示。
文件在保存時通常有一個或多個數(shù)據(jù)項作為關(guān)鍵字,它必須能區(qū)分該記錄和其他記錄,比如可以將序號定義為關(guān)鍵字,因為每個人的序號不同,也可以將姓名定義成關(guān)鍵字,但性別卻不能作為關(guān)鍵字。
2.文件的種類
根據(jù)文件中數(shù)據(jù)的組織方式,文件可以分為文本文件和二進制文件。文本以字節(jié)為單位,每個字節(jié)對應一個ASCII碼,表示一個字符,也稱字符文件,在輸入輸出過程中系統(tǒng)要對內(nèi)外存數(shù)據(jù)格式進行相應轉(zhuǎn)換。而二進制文件以字位為單位,實際上是由0和1組成的序列,輸入輸出過程中系統(tǒng)不對數(shù)據(jù)格式進行轉(zhuǎn)換。
根據(jù)文件的讀寫方式,可以將文件分為順序文件和隨機文件。
4.2順序文件操作
順序文件的各個記錄順序地存放在外部介質(zhì)的連續(xù)區(qū)域。對于順序文件的操作通常有三個步驟:打開文件、讀寫文件、關(guān)閉文件。
4.2.1順序文件的打開和關(guān)閉
在使用順序文件之前,必須進行打開文件操作,在使用完一個文件后,也必須進行關(guān)閉文件操作。
1.順序文件的打開
為了對順序文件進行讀寫操作,必須首先打開文件,讀寫操作完成后再關(guān)閉。文件的打開方式有3種,分別通過使用ifstream類、ofstream類、fstream類成員函數(shù)來實現(xiàn)。
(1)?ifstream類:支持從本流類(對象)所對應的磁盤文件中讀入數(shù)據(jù)。
(2)?ofstream類:支持從本流類(對象)所對應的磁盤文件中寫出數(shù)據(jù)。
(3)?fstream類:支持從本流類(對象)所對應的磁盤文件中讀入和寫出數(shù)據(jù)的雙向操作。
定義ifstream類的對象,其一般形式為:
ifstream<對象名>;
<對象名>.open(“<文件名>”);
為了書寫簡便,可以將上面兩條語句合并寫成:ifstream<對象名>(“<文件名>”);
定義ofstream類的對象,其一般形式為:
ofstream<對象名>;
<對象名>.open(“<文件名>”);
同樣,可以將上面兩條語句合并寫成:ofstream<對象名>(“<文件名>”);
定義fstream類的對象,其一般形式為:
fstream<對象名>;
<對象名>.open(“<文件名>”,<模式>);同樣,可以將上面兩條語句合并寫成:fstream<對象名>(“<文件名>”,<模式>);
open函數(shù)原型:
voidopen(constchar*filename,intfilemode,intprot=filebuf::openprot);
(1)?open:關(guān)鍵字,表示將指定的文件按某種方式打開。
(2)?filename:即文件名,指定要打開的文件的文件名,包括路徑。
(3)?filemode:即訪問模式,文件的訪問模式如表4-1所示。表4-1文件的訪問模式
filemode可以缺省,當文件流為輸入文件流時,其缺省值為in;為輸出文件流時,其缺省值為out。如果需要,可以用位運算符進行組合來表示所需的訪問模式。例如:
ios::in|ios::out//以可讀可寫的方式打開文件
(4)prot:指定打開文件的保護方式,它與具體的操作系統(tǒng)有關(guān),一般用缺省值“filebuf::openprot”表示DOS兼容的方式。
例如:
如果要打開“D:\VC++程序設(shè)計\第4章”目錄下的一個文件名為“file1.txt”的文件,向文件寫入數(shù)據(jù),則命令應寫為:
fstreamoutfile1; //定義文件流類fstream的一個對象outfile1
outfile1.open(“D:\VC++程序設(shè)計\第4章\file1.txt”,ios::out);
//調(diào)用該對象的open函數(shù)打開并寫文件“file1.txt”
2.順序文件的關(guān)閉
文件操作完成后必須及時關(guān)閉,關(guān)閉操作可以將內(nèi)存中尚未寫入文件的數(shù)據(jù)寫入文件,并切斷與內(nèi)存的聯(lián)系。
關(guān)閉流類的對象,其一般形式為:
<對象名>.close();
close函數(shù)原型:
voidclose()
例如:
如果要關(guān)閉上面的“file1.txt”的文件,則命令應寫為:
outfile1.close();//關(guān)閉已打開的outfile1流對象4.2.2文件的讀寫
打開順序文件后,就可以對文件進行讀寫操作了。下面分別介紹文件的寫操作和讀操作。
1.寫操作
順序文件的寫操作是指寫入文件的數(shù)據(jù)在文件中的存放位置是連續(xù)的。
將數(shù)據(jù)寫入順序文件所用的命令是:put()函數(shù)以及插入符“<<”。
put()函數(shù)的一般形式為:
put(charch);
put()函數(shù)用來將字符變量ch中存放的字符寫到輸出文件中,即向文件中寫入一個字符。
【例4-1】
利用put()函數(shù)將字符串“Thisisanexampleoftheuseoffunctionput().”順序?qū)懭胛募?/p>
程序如下:
#include“stdafx.h”
#include<fstream.h>//fstream類頭文件
#include<iostream.h>
intmain(intargc,char*argv[])
{
char*str=“Thisisanexampleoftheuseoffunctionput().”;
ofstreamoutfile2;
//定義文件流類fstream的一個對象outfile2
outfile2.open(“text1.txt”,ios::out);
//在當前路徑下建立并打開文件"text1.txt"
if(!outfile2) //判斷該文件是否打開 {
cout<<''text1.txtopenerror!''<<endl;
return0;
}
for(inti=0;str[i]!='\0';i++)
outfile2.put(str[i]);
//利用put函數(shù)把數(shù)據(jù)順序?qū)懭胛募?/p>
outfile2.close(); //不要忘記文件使用結(jié)束后要及時關(guān)閉
return0;
}
程序運行后,在當前路徑上建立了一個名為“text1.txt”的文本文件。程序運行過程中,執(zhí)行到outfile2.open("text1.txt",ios::out);語句,如果磁盤上沒有文本文件“text1.txt”,系統(tǒng)就會自動新建一個文本文件“text1.txt”,如果磁盤上已有文本文件"text1.txt",則會覆蓋原來的文件。用寫字板打開“text1.txt”,如圖4-1所示。圖4-1文本文件"text1.txt"
2.讀操作
對于一個已經(jīng)建立好的順序文件,可以通過讀操作從文件的讀寫位置開始依次順序讀取數(shù)據(jù)。
讀順序文件所用的命令是:get()函數(shù)和getline()函數(shù)以及提取符“>>”。
1)?get()函數(shù)
get()函數(shù)的一般形式為:
get(char&ch);
get()函數(shù)用來從文件中讀取一個字符。
2)?getline()函數(shù)
getline()函數(shù)的一般形式為:
getline(char*pch,intcount,chardelim=?‘\n’);
getline()函數(shù)用來從文件中讀取多個字符,其中字符的個數(shù)由count指定,delim是讀取字符時指定的結(jié)束符。
下面的例題分別使用get()函數(shù)和getline()函數(shù)進行文本文件的讀操作,請注意比較這兩個函數(shù)的異同。
【例4-2】
分別利用get()函數(shù)和getline()函數(shù)讀出例4-1生成的順序文件“text1.txt”。
方法1:利用get()函數(shù)讀操作。
程序如下:
#include''stdafx.h''
#include<fstream.h> //fstream類頭文件
#include<iostream.h>
intmain(intargc,char*argv[])
{
charstr[100];
inti=0;
ifstreaminfile1; //定義文件流類fstream的一個對象infile1
infile1.open("text1.txt",ios::in);
//在當前路徑下打開并讀文件“text1.txt”,如果該路徑下沒有該文件可在文件名前加上適當?shù)穆窂矫?,也可將?_1生成的“text1.txt”復制到當前路徑下
if(!infile1) //判斷該文件是否打開
{
cout<<“text1.txt文件沒有打開!”<<endl;
return0;
}
//比較標記開始
while(infile1)
{
infile1.get(str[i]); //利用get函數(shù)從順序文件讀取數(shù)據(jù)
i++;
} str[i]='\0'; //將字符串尾符‘\0’作為串結(jié)束標志
//比較標記結(jié)束
infile1.close();
cout<<str<<endl; //輸出所讀入的內(nèi)容
return0;
}
程序運行結(jié)果如圖4-2所示。圖4-2讀順序文件運行結(jié)果方法2:利用getline()函數(shù)讀操作。
該函數(shù)的使用只需將上面的程序中從“//比較標記開始”到“//比較標記結(jié)束”的語句改為如下語句,程序的運行結(jié)果和上面的程序完全相同。
程序如下:
while(infile1)
{
infile1.getline(str,sizeof(str),'0'); //讀取整個文件
cout<<str; //輸出所讀取的內(nèi)容
} 利用getline()函數(shù)不僅可以從文件讀數(shù)據(jù),也可以從鍵盤輸入讀數(shù)據(jù)。下面的例題介紹如何通過鍵盤輸入讀取數(shù)據(jù)。
【例4-3】
利用getline()函數(shù)從鍵盤讀入3行數(shù)據(jù),顯示在屏幕上,并將這3行數(shù)據(jù)寫入文件“text2.txt”。
程序如下:
#include"stdafx.h"
#include<fstream.h>//fstream類頭文件
#include<iostream.h>
intmain(intargc,char*argv[])
{
ofstreamfile1;//定義文件流類fstream的一個對象file1
file1.open(“text2.txt”,ios::out);
if(!file1)
{
cout<<“text2.txtopenerror!”<<endl;
return0;
}
chars[3][100];
cout<<“輸入3行數(shù)據(jù):”<<endl;
for(inti=0;i<3;i++)
cin.getline(s[i],100,‘\n’);//每次從鍵盤輸入一行
cout<<“----------------------------------”<<endl;//分隔輸入和輸出的內(nèi)容
for(i=0;i<3;i++)
{ cout<<s[i]<<endl;//輸出所讀取的內(nèi)容
file1<<s[i]<<endl;//寫入文件text2.txt
}
file1.close();//不要忘記文件使用結(jié)束后要及時關(guān)閉
return0;
}
程序運行結(jié)果如圖4-3所示。圖4-3利用getline()函數(shù)從鍵盤讀運行結(jié)果
【例4-4】編寫一個程序,用來拼接兩個順序文件的內(nèi)容,其結(jié)果保存到第一個文件中。
提示:先將例4-1生成的“text1.txt”和例4-3生成的“text2.txt”復制到當前路徑下,運行程序后兩個文件的內(nèi)容就保存在“text1.txt”中。
程序如下:
#include“stdafx.h”
#include<fstream.h>
#include<iostream.h>
#include<stdlib.h>
#include<stdio.h>
intmain(intargc,char*argv[])
{ charstr[100];
inti=0,file1Length=0,file2Length=0;
fstreamfile1;//定義文件流類fstream的一個對象file1
file1.open("text1.txt",ios::app);
if(!file1)//判斷該文件是否打開
{
cout<<"text1.txt文件沒有打開!"<<endl;
exit(0);
}
ifstreamfile2;//定義文件流類ifstream的一個對象file2
file2.open("text2.txt",ios::in);
if(!file2)//判斷該文件是否打開
{ cout<<"text2.txt文件沒有打開!"<<endl;
exit(0);
}
while(file2)
{
file2.get(str[i]);
i++;
}
str[i]='\0';//將字符串尾符'\0'作為串結(jié)束標志
for(i=0;str[i]!='\0';i++)
file1.put(str[i]);//利用put函數(shù)把數(shù)據(jù)順序?qū)懭胛募?/p>
file1.close();
file2.close();
return0;
}程序運行一次后,在當前目錄下再打開“text1.txt”,其結(jié)果如圖4-4所示。圖4-4"text1.txt"內(nèi)容顯示在上面的這個例題中,文件名是在程序中設(shè)定的,不具有通用性。為了在程序運行時根據(jù)需要進行輸入,可以將文件名作為程序的參數(shù),由命令行參數(shù)來提供。
【例4-5】
將一個文件的內(nèi)容備份到另一個文件,源文件名和備份文件名由命令行參數(shù)提供。
程序如下:
#include"stdafx.h"
#include<fstream.h>
constintMAX=20;//定義文件最大長度
intmain(intargc,char*argv[])
{
if(argc!=3)
{
cout<<"參數(shù)個數(shù)不正確"<<endl;
return0;
}
charstr[20]; ifstreaminfile(argv[1]);//源文件名
if(!infile)//判斷源文件是否打開
{
cout<<"源文件沒有打開!"<<endl;
return0;
}
ofstreamoutfile(argv[2]);//備份文件名
if(!outfile)//判斷備份文件是否打開
{
cout<<"備份文件沒有打開!"<<endl;
return0;
}
while(infile)
{
infile.getline(str,sizeof(infile),'\0');
outfile<<str<<endl;
}
return0;
}該程序文件名為“Chap4_5.cpp”,編寫完成后,選擇“編譯/編譯Chap4_5.cpp”命令編譯程序,在輸出窗口得到“Chap4_5.exe-0error(s),0warning(s)”后,再選擇“編譯/構(gòu)件Chap4_5.exe”命令生成可執(zhí)行文件“Chap4_5.exe”(文件的路徑為“D:\VC++程序設(shè)計\第4章\Chap4_5\Debug\Chap4_5.exe”),它的功能類似于DOS中的copy命令,使用方法也相同。在Windows命令提示符里(如圖4-5所示)輸入如下格式的命令:
程序文件名源程序文件名備份文件名
例如:將文件“d:\text1.txt”復制為文件“d:\text1.bak”,具體操作是在命令提示符后
輸入:
Chap4_5d:\.text1.txtd:\text1.bak圖4-5在命令提示符里運行Chap4_5
4.3隨機文件操作
隨機文件的讀寫操作是非順序的(即隨機的),以隨機的方式訪問文件時,文件的記錄為定長格式,即每條記錄的長度都是相同的。這樣在讀寫磁盤文件的某一數(shù)據(jù)前無需讀寫前面的數(shù)據(jù),從而大大提高了存取速度。
在以隨機的方式讀寫文件時,同樣要首先打開文件,讀寫操作完成后再關(guān)閉,其所用函數(shù)和順序方式所用的函數(shù)相同。
為了方便文本文件和二進制文件的隨機讀寫,VisualC++提供了設(shè)置寫入和讀取文件的讀寫指針位置函數(shù)。文件設(shè)置讀寫指針位置函數(shù)可以將文件指針移動到指定的位置。4.3.1隨機寫
對于文件的寫操作,ostream提供了seekp()函數(shù),它有絕對偏移指針設(shè)置函數(shù)和相對偏移指針設(shè)置函數(shù)兩種形式。
1.絕對偏移指針設(shè)置函數(shù)
絕對偏移指針設(shè)置函數(shù)的一般形式為:
ostream&seekp(longpos);
該函數(shù)的作用是將寫入數(shù)據(jù)的開始位置定位于距文件首某個指定字節(jié)長度的地方。其中,pos是距文件首的絕對偏移量,即文件指針的絕對位置。
例如:在一個已經(jīng)打開的數(shù)據(jù)文件指針距文件首10個字節(jié)的地方寫數(shù)據(jù),可以寫成:
outfile.seekp(10);//該文件ostream流類對象名為outfile
2.相對偏移指針設(shè)置函數(shù)
相對偏移指針設(shè)置函數(shù)的一般形式為:
ostream&seekp(longoff,ios::seek_dirdir);
該函數(shù)的作用是將寫入數(shù)據(jù)的開始位置定位于相對于文件某個位置指定字節(jié)長度的地方。其中,off是距文件某個位置的相對偏移量,即文件指針的相對位置;ios::seek_dirdir用來指定偏移類型,偏移類型如表4-2所示。表4-2偏移類型例如:在一個已經(jīng)打開的數(shù)據(jù)文件指針距當前位置10個字節(jié)的地方寫數(shù)據(jù),可以寫成:
file1.seekp(10,ios::cur);//該文件ostream流類對象名為file1
【例4-6】
利用seekp()函數(shù)將字母a~z組成的字符串間隔的寫入數(shù)據(jù)文件“字母表.dat”中,相應的偏移量依次為0,3,6,9,…。
程序如下:
#include"stdafx.h"
#include<iostream.h>
#include<fstream.h>
intmain(intargc,char*argv[])
{
charch='a';
charstr[26];//定義表示26個字母的字符串
for(inti=0;i<26;i++)
{
str[i]=ch+i;
cout<<str[i];
}
cout<<endl;
ofstreamfile1("字母表.dat");//打開并新建或?qū)懳募?/p>
if(!file1)//判斷該文件是否打開
{
cout<<"字母表文件沒有打開!"<<endl;
return0;
}
for(i=0;i<26;i++)
{ file1.seekp(3*i); //定位
file1.put(str[i]); //寫數(shù)據(jù)
}
file1.close();//關(guān)閉文件
return0;
}
程序運行結(jié)果如圖4-6所示。
程序運行后生成文件“字母表.dat”的內(nèi)容用記事本方式打開,如圖4-7所示。
程序運行后生成文件“字母表.dat”的內(nèi)容用VisualC++程序打開,效果如圖4-8所示。圖4-6隨機寫舉例運行結(jié)果圖4-7在記事本里打開“字母表.dat”文件內(nèi)容圖4-8在VisualC++里的“字母表.dat”文件內(nèi)容從圖4-8中可以看出,寫入的字母之間相隔2個字節(jié)。小寫字母“a”的ASCII碼用十六進制表示為61,后面字母依次加1,其中間隔中未寫入的地方為00。4.3.2隨機讀
對于文件的讀操作,istream提供了seekg()函數(shù),它有絕對偏移指針設(shè)置函數(shù)和相對偏移指針設(shè)置函數(shù)兩種形式。
1.絕對偏移指針設(shè)置函數(shù)
絕對偏移指針設(shè)置函數(shù)的一般形式為:
istream&seekg(longpos);
該函數(shù)的作用是用來設(shè)置讀取數(shù)據(jù)的開始位置。其中,pos是距文件首的絕對偏移量,即文件指針的絕對位置。
例如:在一個已經(jīng)打開的數(shù)據(jù)文件指針距文件首20個字節(jié)的地方開始讀數(shù)據(jù),可以寫成:
file2.seekp(20);//該文件istream流類對象名為file2
2.相對偏移指針設(shè)置函數(shù)
相對偏移指針設(shè)置函數(shù)的一般形式為:
ostream&seekp(longoff,ios::seek_dirdir);
該函數(shù)的作用是將讀取數(shù)據(jù)的開始位置定位于相對于文件某個位置指定字節(jié)長度的地方。其中,off是距文件某個位置的相對偏移量,即文件指針的相對位置。ios::seek_dirdir用來指定偏移類型,偏移類型見表4-2。
例如:在一個已經(jīng)打開的數(shù)據(jù)文件指針距當前位置30個字節(jié)的地方讀取數(shù)據(jù),可以寫成:
File2.seekp(30,ios::cur);//該文件istream流類對象名為file2
【例4-7】
利用seekg()函數(shù)將例4-6生成的“字母表.dat”數(shù)據(jù)文件的內(nèi)容逆序輸出,即實現(xiàn)文件的倒讀功能。
程序如下:
#include“stdafx.h”
#include<iostream.h>
#include<fstream.h>
intmain(intargc,char*argv[])
{
inti=0,len=0;//len表示文件長度
charstr[100];
ifstreamfile2("字母表.dat");//打開并新建或?qū)懳募?/p>
if(!file2)//判斷該文件是否打開
{ cout<<"文件沒有打開!"<<endl;
return0;
}
while(file2>>str[i])//求出文件長度
{
len++;
}
cout<<"文件長度為:"<<len<<endl;
cout<<"文件倒讀為:";
file2.close();//關(guān)閉文件
file2.open("字母表.dat",ios::ate);//打開文件并將指針指定到文件尾
while(i<len)
{ file2.seekg(-i-1,ios::end);
//設(shè)定相對于文件尾的偏移量(負數(shù))
file2.get(str[i]);//讀取數(shù)據(jù)
cout<<str[i];//輸出數(shù)據(jù)
i++;
}
file2.close();//關(guān)閉文件
cout<<endl;
return0;
}
程序運行結(jié)果如圖4-9所示。圖4-9隨機讀舉例運行結(jié)果
4.4二進制文件操作
前面已經(jīng)講過按文本方式讀寫文件,下面介紹按二進制方式讀寫文件。
與按文本方式讀寫不同,按二進制方式讀寫文件有VisualC++語言提供的專門函數(shù),即write()函數(shù)和read()函數(shù)。
write()函數(shù)的一般形式為:
write(constchar*pch,intcount);
write()函數(shù)用來向二進制文件中寫入多個字符,其中字符的個數(shù)由count指定。
read()函數(shù)的一般形式為:
read(constchar*pch,intcount);
read()函數(shù)用來從二進制文件中讀取多個字符,其中字符的個數(shù)由count指定。
需要注意的是:打開二進制文件時,要在open()函數(shù)中將訪問模式設(shè)置為ios::binary。
采用二進制方式讀寫文件的優(yōu)點是便于對數(shù)據(jù)進行隨機訪問,存取效率高;可以對文件進行壓縮處理,存儲密度大;數(shù)據(jù)文件便于保密等。它的缺點是兼容性低,不可利用文字處理程序進行閱讀或編輯修改等。因此通常將純文本信息以文本文件方式存儲,而將數(shù)值信息以二進制方式存儲。
【例4-8】
利用write()函數(shù)把數(shù)據(jù)寫入二進制文件。程序如下:
#include"stdafx.h"
#include<iostream.h>
#include<fstream.h>
intmain(intargc,char*argv[])
{
inta[10]={0};//定義數(shù)組
for(inti=0;i<9;i++)
{
a[i+1]=a[i]*10+i+1;
cout<<a[i]<<endl;
}
cout<<"----------------------------------------"<<endl; ofstreamouttxt("ot.txt");//打開text
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專業(yè)版股權(quán)質(zhì)押權(quán)責明確協(xié)議樣本一
- 科技驅(qū)動未來
- 元宵節(jié)數(shù)字營銷解讀
- 2025年度拆除工程噪音污染控制合同4篇
- 2025年度廠房設(shè)備租賃與綠色制造合同范本4篇
- 《中科院化學課件:不對稱催化反應及其在藥物合成中的應用》
- 二零二五年度膩子材料批發(fā)與零售合同3篇
- 2025年度廠區(qū)裝卸工勞動保障政策宣傳合同4篇
- 2025年度綠色環(huán)保型老舊廠房拆除及重建一體化工程合同4篇
- 2025年度高端醫(yī)療器械研發(fā)與生產(chǎn)合同4篇
- 平面向量及其應用試題及答案
- 2024高考復習必背英語詞匯3500單詞
- 消防控制室值班服務(wù)人員培訓方案
- 《貴州旅游介紹》課件2
- 2024年中職單招(護理)專業(yè)綜合知識考試題庫(含答案)
- 無人機應用平臺實施方案
- 挪用公款還款協(xié)議書范本
- 事業(yè)單位工作人員年度考核登記表(醫(yī)生個人總結(jié))
- 盾構(gòu)隧道施工數(shù)字化與智能化系統(tǒng)集成
- 【企業(yè)盈利能力探析文獻綜述2400字】
- 2019年醫(yī)養(yǎng)結(jié)合項目商業(yè)計劃書
評論
0/150
提交評論