第四章數(shù)據(jù)存儲(chǔ)_第1頁(yè)
第四章數(shù)據(jù)存儲(chǔ)_第2頁(yè)
第四章數(shù)據(jù)存儲(chǔ)_第3頁(yè)
第四章數(shù)據(jù)存儲(chǔ)_第4頁(yè)
第四章數(shù)據(jù)存儲(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩37頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第第9章章 數(shù)據(jù)存儲(chǔ)數(shù)據(jù)存儲(chǔ)Android中5種數(shù)據(jù)存儲(chǔ)方式 使用SharedPreferences臨時(shí)文件存儲(chǔ)首選項(xiàng) 文件存儲(chǔ)數(shù)據(jù) SQLite數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù) 使用contentprovider存儲(chǔ)數(shù)據(jù)(主要實(shí)現(xiàn)數(shù)據(jù)共享) 網(wǎng)絡(luò)存儲(chǔ)數(shù)據(jù)第一節(jié)第一節(jié)SharedPreferencesSharedPreferencesv1、存儲(chǔ)臨時(shí)性數(shù)據(jù),保證下一次進(jìn)入該系統(tǒng)、存儲(chǔ)臨時(shí)性數(shù)據(jù),保證下一次進(jìn)入該系統(tǒng),能夠獲取該文件的數(shù)據(jù),進(jìn)行操作。,能夠獲取該文件的數(shù)據(jù),進(jìn)行操作。存儲(chǔ)數(shù)據(jù)和讀取數(shù)據(jù)的流程:存儲(chǔ)數(shù)據(jù)和讀取數(shù)據(jù)的流程:v 存儲(chǔ)數(shù)據(jù)信息存儲(chǔ)數(shù)據(jù)信息v 1)打開名為configuration的配置文件,

2、如果存在則打開它,否則創(chuàng)建新的名為configuration的配置文件v SharedPreferences sharedPreferences = getSharedPreferences(configuration, 0);v 2)讓sharedPreferences處于編輯狀態(tài)v SharedPreferences.Editor editor = sharedPreferences.edit();v 3)存放數(shù)據(jù)v editor.putString(name,harvey);v 4)完成提交v mit();v 讀取數(shù)據(jù)信息讀取數(shù)據(jù)信息v 1)打開名為configuration的配置文件v

3、 SharedPreferences sharedPreferences = getSharedPreferences(configuration, 0);v 2)獲取數(shù)據(jù)v String name = sharedPreferences.getString(name,默認(rèn)值);獲取獲取SharedPreferences對(duì)象方法對(duì)象方法vSharedPreferences pre = Context.getSharedPreferences(String name,int mode);v注:name為本組件的配置文件名(如果想要與本應(yīng)用程序的其他組件共享此配置文件,可以用這個(gè)名字來(lái)檢索到這個(gè)配

4、置文件,在這里要特別注意,因?yàn)樵贏ndroid 中已經(jīng)確定了SharedPreferences 是以xml形式保存,所以,在填寫文件名參數(shù)時(shí),不要給定“.xml”后綴,android會(huì)自動(dòng)添加。只要直接寫上文件名即可。它會(huì)直接被保存在/data/data/shared_prefs路徑下,它是采用鍵值對(duì)的形式保存參數(shù)。當(dāng)你需要獲得某個(gè)參數(shù)值時(shí),按照參數(shù)的鍵索引即可)。 vSharedPreferences支持的三種訪問(wèn)模式(這三種模式可以由Activity調(diào)用:v1、 MODE_PRIVATE:只有創(chuàng)建這個(gè)SharedPreferences的Activity與權(quán)限讀寫它。v2、 MODE_WOR

5、LD_READABLE: 其他Activity對(duì)這個(gè)SharedPreferences具有可讀權(quán)限。v3、 MODE_WORLD_WRITEABLE:其他Activity對(duì)這個(gè)SharedPreferences也具有可讀可寫的權(quán)利練習(xí)練習(xí)第二節(jié)第二節(jié)文件存儲(chǔ)文件存儲(chǔ)簡(jiǎn)介簡(jiǎn)介v利用利用SharedPreferences只能保存簡(jiǎn)單的數(shù)據(jù),只能保存簡(jiǎn)單的數(shù)據(jù),要存儲(chǔ)更多類型的數(shù)據(jù),則需要使用文件的存儲(chǔ)操要存儲(chǔ)更多類型的數(shù)據(jù),則需要使用文件的存儲(chǔ)操作。對(duì)于文件的存儲(chǔ)操作,在作。對(duì)于文件的存儲(chǔ)操作,在Android中有兩種形中有兩種形式。式。v1、直接利用、直接利用Activity 提供的文件操作方法

6、。此類提供的文件操作方法。此類操作的所有文件路徑只能是操作的所有文件路徑只能是“datadatafiles文件文件名稱名稱”v2、利用、利用java IO流執(zhí)行操作。此類操作的文件可流執(zhí)行操作。此類操作的文件可以是任意路徑(包括以是任意路徑(包括sdcard)下,但是需要為其操下,但是需要為其操作授權(quán)。作授權(quán)。File類簡(jiǎn)介類簡(jiǎn)介v在在java中,中,F(xiàn)ile類既可以表示文件又可以表類既可以表示文件又可以表示目錄,它提供了操作文件或目錄的一組方示目錄,它提供了操作文件或目錄的一組方法法v 1: File f = new File(F:javarose); (其中其中F:javarose是一個(gè)已

7、經(jīng)存在的目錄是一個(gè)已經(jīng)存在的目錄),你可以調(diào)用,你可以調(diào)用file.exists()看看目錄是否存在,如存在則函數(shù)返回目錄是否存在,如存在則函數(shù)返回true,如不存在你可以調(diào)用,如不存在你可以調(diào)用 file.mkdir(); 創(chuàng)建創(chuàng)建rose目錄目錄。v 2: File file=new(f,“file1.txt”);可以實(shí)例化可以實(shí)例化F:javarose目錄下的文件目錄下的文件file1.txt(文件已存在文件已存在),你可以調(diào)用,你可以調(diào)用file.exists()看文看文件是否存在,如存在則函數(shù)返回件是否存在,如存在則函數(shù)返回true,如不存在你可以調(diào)用,如不存在你可以調(diào)用 file.

8、createNewFile()創(chuàng)建創(chuàng)建 file1.txt文件。注意,當(dāng)你實(shí)例化一個(gè)文件。注意,當(dāng)你實(shí)例化一個(gè)已經(jīng)存在的文件時(shí),一定要加上后綴名,如已經(jīng)存在的文件時(shí),一定要加上后綴名,如.txt等,否則實(shí)例化的文件等,否則實(shí)例化的文件是不存在的。調(diào)用是不存在的。調(diào)用file.exists()返回返回false.Environment類簡(jiǎn)介類簡(jiǎn)介v Environment 是一個(gè)提供訪問(wèn)環(huán)境變量的類是一個(gè)提供訪問(wèn)環(huán)境變量的類。v Environment 常用方法:常用方法:v 01.方法:方法:getDataDirectory() v 02.解釋:返回解釋:返回 File ,獲取,獲取 Andr

9、oid 數(shù)據(jù)目錄數(shù)據(jù)目錄。 v 03.方法:方法:getDownloadCacheDirectory() v 04.解釋:返回解釋:返回 File ,獲取,獲取 Android 下載下載/緩存內(nèi)容目錄。緩存內(nèi)容目錄。v 05.方法:方法:getExternalStorageDirectory()v 06.解釋:返回解釋:返回 File ,獲取外部存儲(chǔ)目錄即,獲取外部存儲(chǔ)目錄即 SDCard v 07.方法:方法:getExternalStoragePublicDirectory(String type)v 08.解釋:返回解釋:返回 File ,取一個(gè)高端的公用的外部存儲(chǔ)器目錄來(lái)擺放某些,取一

10、個(gè)高端的公用的外部存儲(chǔ)器目錄來(lái)擺放某些類型的類型的文件文件 v 09.方法:方法:getExternalStorageState() v 10.解釋:返回解釋:返回 File ,獲取外部存儲(chǔ)設(shè)備的當(dāng)前,獲取外部存儲(chǔ)設(shè)備的當(dāng)前狀態(tài)狀態(tài) v 11.方法:方法:getRootDirectory() v12.解釋:返回解釋:返回 File ,獲取,獲取 Android 的根目錄的根目錄文件字節(jié)輸入文件字節(jié)輸入/輸出流輸出流v文件字節(jié)輸入文件字節(jié)輸入/輸出輸出流是指流是指FileInputStream 和和FileOutputStream類,它們實(shí)現(xiàn)了對(duì)文類,它們實(shí)現(xiàn)了對(duì)文件的順序訪問(wèn),并以字節(jié)為單位進(jìn)

11、行讀件的順序訪問(wèn),并以字節(jié)為單位進(jìn)行讀/寫操寫操作作vFileOutputStream用于將字節(jié)數(shù)據(jù)寫出用于將字節(jié)數(shù)據(jù)寫出到文件。繼承自到文件。繼承自O(shè)utputStream類類構(gòu)造方法摘要構(gòu)造方法摘要FileOutputStream(File file) 創(chuàng)建一個(gè)向指定 File 對(duì)象表示的文件中寫入數(shù)據(jù)的文件輸出流。FileOutputStream(File file, boolean append) 創(chuàng)建一個(gè)向指定 File 對(duì)象表示的文件中寫入數(shù)據(jù)的文件輸出流。FileOutputStream(FileDescriptor fdObj) 創(chuàng)建一個(gè)向指定文件描述符處寫入數(shù)據(jù)的輸出文件流,

12、該文件描述符表示一個(gè)到文件系統(tǒng)中的某個(gè)實(shí)際文件的現(xiàn)有連接。FileOutputStream(String name) 創(chuàng)建一個(gè)向具有指定名稱的文件中寫入數(shù)據(jù)的輸出文件流。FileOutputStream(String name, boolean append) 創(chuàng)建一個(gè)向具有指定 name 的文件中寫入數(shù)據(jù)的輸出文件流。常用方法Close():關(guān)閉緩沖輸出流并釋放與此流有關(guān)的所有系統(tǒng)資源。Write(int b): 將指定的字節(jié)寫入此緩沖輸出流Write(byte b):將b.length個(gè)字節(jié)寫入此緩沖輸出流。案例案例vFile file=new file(“d:test.txt);vFil

13、eOutputStream fos=new FileOutputStream(file);vString x=“iamok”vFos.write(x.getbytes()vFos.closeFileInputStreamv一、構(gòu)造方法一、構(gòu)造方法v FileInputStream(String name); /使用給定的文件名創(chuàng)建對(duì)象使用給定的文件名創(chuàng)建對(duì)象v FileInputStream(File file); /使用使用File對(duì)象創(chuàng)建對(duì)象創(chuàng)建FileInputStream對(duì)對(duì)象象v 二、讀取文件二、讀取文件v 1.使用文件輸入流讀取文件使用文件輸入流讀取文件v FileInuputSt

14、ream istream=new ileInputStream(myfile.dat);v 或:或:v File f=new File(myfile.dat);v FileInputStream istream=new FileInputStream(f);v 構(gòu)造方法可能會(huì)產(chǎn)生異常構(gòu)造方法可能會(huì)產(chǎn)生異常IOException,故為了把一個(gè)文件輸入流對(duì)象與一個(gè)故為了把一個(gè)文件輸入流對(duì)象與一個(gè)文件關(guān)聯(lián)起來(lái),需:文件關(guān)聯(lián)起來(lái),需:v try FileInputStream ins=new FileInputStream(myfile.dat);v catch (IOException e) Sys

15、tem.out.println(File read error:+e);v 2.從輸入流中讀取字節(jié)從輸入流中讀取字節(jié)v int read(); /從輸入流中讀取單個(gè)字節(jié)數(shù)據(jù)(從輸入流中讀取單個(gè)字節(jié)數(shù)據(jù)(0255),如到輸入流末尾),如到輸入流末尾則返回則返回-1v int read(byte b); /讀多個(gè)字節(jié)讀多個(gè)字節(jié)v int read(byte b,int off,int len);v 3.關(guān)閉流關(guān)閉流v Java在程序結(jié)束時(shí)自動(dòng)關(guān)閉所有打開的流,但顯式關(guān)閉任何打開的流是一個(gè)好在程序結(jié)束時(shí)自動(dòng)關(guān)閉所有打開的流,但顯式關(guān)閉任何打開的流是一個(gè)好習(xí)慣。習(xí)慣。v close(); FileIn

16、putStream使用案例使用案例v FileInputStream f=FileInputStream(/home/software./root/ends,jsp);BufferedInputStream bu=new BufferedInputStream(f);byte a=new byte10;int n;while(n=bu.read(a)!=-1)String s=new String(a,o,n)out.println(s);f.close();bu.close();read返回的是一個(gè)整型的數(shù),當(dāng)?shù)轿募奈矔r(shí)候返回返回的是一個(gè)整型的數(shù),當(dāng)?shù)轿募奈矔r(shí)候返回-1,也就是說(shuō)也就是說(shuō)

17、read一次讀取的字節(jié)數(shù)為字節(jié)數(shù)組的長(zhǎng)度。一次讀取的字節(jié)數(shù)為字節(jié)數(shù)組的長(zhǎng)度。SQLite簡(jiǎn)單介紹 vSQ為Structured Query (結(jié)構(gòu)化查詢)的縮寫,Lite表示輕量級(jí)。SQLite是一款開源的關(guān)系型數(shù)據(jù)庫(kù)。幾乎可以支持所有現(xiàn)代編程語(yǔ)言和各種操作系統(tǒng)v對(duì)SQLite數(shù)據(jù)庫(kù)的操作一般包括:創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),打開數(shù)據(jù)庫(kù),關(guān)閉數(shù)據(jù)庫(kù),刪除數(shù)據(jù)庫(kù)。創(chuàng)建和打開數(shù)據(jù)庫(kù)的方法: v 使用openOrCreateDatabase()方法來(lái)創(chuàng)建,若數(shù)據(jù)庫(kù)不存在,則會(huì)創(chuàng)建新數(shù)據(jù)庫(kù),若存在,則打開數(shù)據(jù)庫(kù)。 v openOrCreateDatabase()方法的返回值為一個(gè)SQLiteDatabase對(duì)象

18、v openOrCreateDatabase()方法的官方說(shuō)明v public SQLiteDatabase openOrCreateDatabase (String name, int mode, SQLiteDatabase.CursorFactoryfactory)v 第一個(gè)參數(shù)為數(shù)據(jù)庫(kù)的名字,string類型。v 第二個(gè)參數(shù)為常量,如下所示常量 含義MODE_PRIVATE 默認(rèn)模式,值為0,文件只可以被調(diào)用該方法的應(yīng)用程序訪問(wèn)v MODE_WORLD_READABLE 所有的應(yīng)用程序都具有對(duì)該文件讀的權(quán)限。v MODE_WORLD_WRITEABLE 所有的應(yīng)用程序都具有對(duì)該文件寫的

19、權(quán)限。v 第三個(gè)參數(shù)當(dāng)query方法被調(diào)用時(shí),用來(lái)實(shí)例化cursor,通常為null例如:SQLiteDatabase sld=this.openOrCreateDatabase(“teacher.db,0,null);v關(guān)閉SQLite數(shù)據(jù)庫(kù)v對(duì)數(shù)據(jù)庫(kù)操作完畢之后,就要關(guān)閉數(shù)據(jù)庫(kù),否則會(huì)拋出SQLiteException異常。關(guān)閉數(shù)據(jù)庫(kù)只需調(diào)用成SQLiteDatabase對(duì)象的.close()方法即可。例如:sld.close()刪除數(shù)據(jù)庫(kù)v直接調(diào)用deleteDatabase()方法即可,如:例如:this.deleteDatabase (“teacher.db);SQLite數(shù)據(jù)庫(kù)中(

20、Table )“表”的操作方法 v 首先要明確一點(diǎn)的是,一個(gè)數(shù)據(jù)庫(kù)可以有很多表,一個(gè)表中包含很多條數(shù)據(jù),也就是說(shuō),在數(shù)據(jù)庫(kù)里面保存數(shù)據(jù)其實(shí)是保存在Table (表)里面的。對(duì)已經(jīng)存在和已經(jīng)創(chuàng)建的數(shù)據(jù)庫(kù)操作一般包括:創(chuàng)建表,往表添加數(shù)據(jù),從表中刪除數(shù)據(jù),修改表中的數(shù)據(jù),查詢表中的數(shù)據(jù),刪除已存在的表。 創(chuàng)建一個(gè)表v通過(guò)調(diào)用數(shù)據(jù)庫(kù)的execSQL (String sql)方法可以創(chuàng)建一個(gè)table(表)vpublic void execSQL(String sql)vexecSQL (String sql)方法的參數(shù)“sql“是SQL語(yǔ)句,為字符串類型。如例如:SQLiteDatabase db;

21、 String sql = CREATE TABLE pic (_id INTEGER PRIMARY KEY , filename VARCHAR(10), data TEXT); db.execSQL(sql); Sql 中最簡(jiǎn)單的創(chuàng)建表的方法Create table 表名(字段1 數(shù)據(jù)類型,字段2 數(shù)據(jù)類型,字段3 數(shù)據(jù)類型,字段4 數(shù)據(jù)類型)項(xiàng)目初始化的代碼項(xiàng)目初始化的代碼String cmd=create table user(id varchar(20) PRIMARY KEY,username varchar(20),password varchar(10);sld.execSQ

22、L(cmd);AlertDialog.Builder ald=new AlertDialog.Builder(MainActivity.this);ald.setTitle(提示);ald.setMessage(表創(chuàng)建成功);ald.setPositiveButton(確定, null);ald.show();向表中插入一條數(shù)據(jù)v 往數(shù)據(jù)庫(kù)的table插入數(shù)據(jù),可以直接調(diào)用db.insert()方法插入,但是insert()方法中的第三個(gè)參數(shù)是一個(gè)ContentValues的,其實(shí)也就是一個(gè)map,包含了一些鍵值對(duì)(key-value)。通過(guò)contentValues的put方法,可以把鍵值對(duì)

23、放進(jìn)contentValues里面,然后再通過(guò)db.insert()方法插到數(shù)據(jù)庫(kù)的table中。vpublic long insert(String table,String nullColumnHack, ContentValues values)vinsert的第一個(gè)參數(shù)是的第一個(gè)參數(shù)是table的名字,第二個(gè)參數(shù)一般為的名字,第二個(gè)參數(shù)一般為null,第三個(gè)參數(shù)是,第三個(gè)參數(shù)是contentValues。若成功。若成功insert,就返回新插入就返回新插入row的的id,不成功返回,不成功返回-1。vContentValues cv =new contentValues(); vcv.

24、put(“num”,1); vcv.put(“data”, 測(cè)試我的數(shù)據(jù)庫(kù)); vdb.insert(table,null,cv); 項(xiàng)目中增加一條新記錄的方法項(xiàng)目中增加一條新記錄的方法public void onClick(View v) / TODO Auto-generated method stubString id=et1.getText().toString();String name=et2.getText().toString();String psw=et3.getText().toString();ContentValues cv=new ContentValues();c

25、v.put(id,id );cv.put(username, name);cv.put(password, psw);sld.insert(user, null, cv);AlertDialog.Builder ald=new AlertDialog.Builder(MainActivity.this);ald.setTitle(提示);ald.setMessage(數(shù)據(jù)添加成功);ald.setPositiveButton(確定, null);ald.show();查詢查詢vquery(String table, String columns, String whereClause, Str

26、ing selectionArgs, String groupBy, Sttring having, String orderBy, String limit) v table: 查詢數(shù)據(jù)的表名 v columns: 要查詢的列名v whereClause: 條件查詢 v whereArgs:條件查詢的參數(shù) v groupBy: 控制分組 v having: 分組過(guò)濾 v orderBy: 排序 v limit: 進(jìn)行分頁(yè) v Select * from mj ;v rawQuery(cmd,null)v Query(mj, new String“id”,”name”,”english? An

27、d maths?”,new String“98”,”78”,null,null,null,null)Cursor類v在在android中查詢數(shù)據(jù)是通過(guò)中查詢數(shù)據(jù)是通過(guò)cursor類來(lái)類來(lái)實(shí)現(xiàn)的,當(dāng)我使用實(shí)現(xiàn)的,當(dāng)我使用SQliteDatabase.query()方法時(shí),會(huì)得方法時(shí),會(huì)得到一個(gè)到一個(gè)Cursor對(duì)象,對(duì)象,Cursor指向的就是每指向的就是每一條數(shù)據(jù)一條數(shù)據(jù)Cursor對(duì)象的常用方法 vmove(int offset); /以當(dāng)前位置為參考,移動(dòng)到指定行 vmoveToFirst(); /移動(dòng)到第一行 vmoveToLast(); /移動(dòng)到最后一行 vmoveToPosition

28、(int position); /移動(dòng)到指定行 vmoveToPrevious(); /移動(dòng)到前一行 vmoveToNext(); /移動(dòng)到下一行 visFirst(); /是否指向第一條 visLast(); /是否指向最后一條 visBeforeFirst(); /是否指向第一條之前 v isAfterLast(); /是否指向最后一條之后 visNull(int columnIndex); /指定列是否為空(列基數(shù)為0) visClosed(); /游標(biāo)是否已關(guān)閉 vgetCount(); /總數(shù)據(jù)項(xiàng)數(shù) vgetPosition(); /返回當(dāng)前游標(biāo)所指向的行數(shù) vgetColumnIn

29、dex(String columnName);/返回某列名對(duì)應(yīng)的列索引值 vgetString(int columnIndex); /返回當(dāng)前行指定列的值 項(xiàng)目中查詢按鈕的代碼項(xiàng)目中查詢按鈕的代碼v Cursor cur=sd.query(banji1, null, null, null, null, null, null);v tv7.setText(本表共本表共+cur.getCount()+條記錄,現(xiàn)在是第條記錄,現(xiàn)在是第1條條記錄記錄);v cur.moveToFirst();v tv4.setText(cur.getString(0);v tv5.setText(cur.getStr

30、ing(1);v tv6.setText(cur.getString(2);v cur_count=1;案例中下一條按鈕功能的實(shí)現(xiàn)案例中下一條按鈕功能的實(shí)現(xiàn)v Cursor cur=sd.query(banji1, null, null, null, null, null, null);v if(cur_countcur.getCount()v cur_count+;v tv7.setText(本表共本表共+cur.getCount()+條記錄,現(xiàn)在是第條記錄,現(xiàn)在是第+cur_count+條記錄條記錄);v cur.move(cur_count);v tv4.setText(cur.getS

31、tring(0);v tv5.setText(cur.getString(1);v tv6.setText(cur.getString(2);v elsev AlertDialog.Builder ad=new AlertDialog.Builder(MainActivity.this);v ad.setTitle(提示提示);v ad.setMessage(已為最后一條記錄了!已為最后一條記錄了!);v ad.setPositiveButton(確定確定, null);v ad.show();v 更新表中的數(shù)據(jù)更新表中的數(shù)據(jù)v 直接調(diào)用數(shù)據(jù)庫(kù)的db.update()方法。v public int update(String table,values,String whereClause,String whereArgs)v 第一個(gè)參數(shù)table名第二個(gè)參數(shù)更新條件,為字符串。第三個(gè)參數(shù)字符串?dāng)?shù)組,和whereClause配合使用。 用法一、如果whereClause的條件已經(jīng)直接給出,如“name= “ + num,num是傳入的參數(shù)。則whereArg

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論