




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)用文檔Java網(wǎng)絡(luò)編程期末復(fù)習(xí)題(I/O、多線程、網(wǎng)絡(luò)編程、數(shù)據(jù)庫操作)二單選題1、下列關(guān)于Java線程的說法那些是正確的(A、每一個(gè)Java線程可以看成由代碼、一個(gè)真實(shí)的 CPU以及數(shù)據(jù)三部份組成。B、創(chuàng)建線程的兩種方法中,從Thread類中繼承的創(chuàng)建方式可以防止出現(xiàn)多父類問題。C、Thread類屬于java.util程序包。D、以上說法無一正確。2、運(yùn)行下列程序,會(huì)產(chǎn)生什么結(jié)果?(public class X extends Thread implements Runable public void run()System.out.println("this is run()&
2、quot;);public static void main(String args) Thread t=new Thread(new X(); t.start();A、第一行會(huì)產(chǎn)生編譯錯(cuò)誤B、第六行會(huì)產(chǎn)生編譯錯(cuò)誤C、第六行會(huì)產(chǎn)生運(yùn)行錯(cuò)誤D、程序會(huì)運(yùn)行和啟動(dòng)3、下列選項(xiàng)中,用于定義接口的關(guān)鍵字是()A、importB、implementsC、interfaceD、protected4.定義類頭時(shí)能使用的修飾符是()。A) private B) static C) abstractD) protected5、下面哪個(gè)方法不可以在任何時(shí)候被任何線程調(diào)用?()A、wait()B、sleep()C、y
3、ield()D> synchronized(this)6.下列關(guān)于線程優(yōu)先級(jí)的說法中,正確的是A)線程的優(yōu)先級(jí)是不能改變的B)線程的優(yōu)先級(jí)是在創(chuàng)建線程時(shí)設(shè)置的C)在創(chuàng)建線程后的任何時(shí)候都可以設(shè)置D) B 和 C7 .線程生命周期中正確的狀態(tài)是A)新建狀態(tài)、運(yùn)行狀態(tài)和終止?fàn)顟B(tài)B)新建狀態(tài)、運(yùn)行狀態(tài)、阻塞狀態(tài)和終止?fàn)顟B(tài)C)新建狀態(tài)、可運(yùn)行狀態(tài)、運(yùn)行狀態(tài)、阻塞狀態(tài)和終止?fàn)顟B(tài)D)新建狀態(tài)、可運(yùn)行狀態(tài)、運(yùn)行狀態(tài)、恢復(fù)狀態(tài)和終止?fàn)顟B(tài)8 .Thread類中能運(yùn)行線程體的方法是A) start()B) resume()C) init()D) run()9在程序讀入字符文件時(shí),能夠以該文件作為直接參數(shù)的類
4、是A) FileReaderC) FileInputStream10) java.io 包白勺File類是A)字符流類C)對(duì)象流類11)下列描述中,正確的是B) BufferedReaderD) ObjectInputStreamB)字節(jié)流類D)非流類文案大全A)在 Serializable B)在 Serializable C)在 Serializable D)在 Serializable接口中定義了抽象方法接口中定義了常量接口中沒有定義抽象方法,也沒有定義常量 接口中定義了成員方法12 . java中用于創(chuàng)建文件對(duì)象的類是()A. File B. Object C. Thread D. F
5、rame13 .從鍵盤上輸入一個(gè)字符串創(chuàng)建文件對(duì)象,若要判斷該文件對(duì)象為目錄文件或數(shù)據(jù)文件, 可使用下列哪個(gè)方法?()A. getPath() B. getName() C.isFile() D. isAbsolute()14 .下列哪個(gè)類不對(duì)直接創(chuàng)建對(duì)象?()A . InputStream B. FileInputStream C. BufferedInputStream D. DataInputStream15 .從鍵盤上輸入多個(gè)字符時(shí),為了避免回車換行符的影響,需要使用下列哪個(gè)流方法?( )A . write() B. flush() C. close() D. skip()16 .以對(duì)
6、象為單位把某個(gè)對(duì)象寫入文件,則需要使用什么方法?()A. writeInt() B writeObject() C. write() D.writUTF()17 .下列哪個(gè)類的方法能夠直接把簡單數(shù)據(jù)類型寫入文件?()A. OutputStream B. BufferedWriter C. ObjectOutputStream. D.FileWriter18 .若一個(gè)類對(duì)象能被整體寫入文件,則定義該類時(shí)必須實(shí)現(xiàn)下列哪個(gè)接口?()A.Runnable B. ActionListener C. WindowsAdapter D. Serializable19 .下列哪種類型的數(shù)據(jù)能以對(duì)象的形式寫入文
7、件?()A . String B. Frame C. Dialog D. Button20 . File類的方法中,用于列舉某目錄下的子目錄及文件的方法是()A . long length() B. long lastModified() C. String list() D. String getName()21 .能夠以字符串為單位寫入文件數(shù)據(jù)的流類是()A. FileOutputStream B. FileWriter C. BufferedWriter C. OutputStream22 .能夠向文件輸入邏輯型數(shù)據(jù)的類是:()A. FileOutputStream B. OutputS
8、tream C. FileWriter D.DataOutputStream23 .在線程同步中,為了喚醒另一個(gè)等待的線程,使用下列方法()A. sleep() B. wait() C notify() D. join()24 .為了得到當(dāng)前正在運(yùn)行的線程,可使用下列哪個(gè)方法?()A . getName() B. Thread.CurrentThread() . B. sleep() D. run()25 .以下()不屬于線程的狀態(tài)。A .就緒狀態(tài)Bo運(yùn)行狀態(tài) Co掛起狀態(tài)Do獨(dú)占狀態(tài)26 .當(dāng)線程被創(chuàng)建后,其所處的狀態(tài)是()A ,阻塞狀態(tài) Bo運(yùn)行狀態(tài)C、就緒狀態(tài)D、新建狀態(tài)27 .當(dāng)線程調(diào)
9、用start()后,其所處狀態(tài)為()A,阻塞狀態(tài)Bo運(yùn)行狀態(tài)C、就緒狀態(tài)D、新建狀態(tài)28 . Thread.sleep ()方法調(diào)用后,當(dāng)?shù)却龝r(shí)間未到,該線程所處狀態(tài)為()A,阻塞狀態(tài)Bo運(yùn)行狀態(tài)C、就緒狀態(tài)D、新建狀態(tài)29 .新生狀態(tài)的線程其可能直接進(jìn)入的狀態(tài)是()A,阻塞狀態(tài)B、運(yùn)行狀態(tài)C、新建狀態(tài)D、結(jié)束狀態(tài)30 . Thread.sleep ()方法調(diào)用后,當(dāng)?shù)却龝r(shí)間已到,該線程所處狀態(tài)為()A,阻塞狀態(tài)Bo運(yùn)行狀態(tài)C、就緒狀態(tài)D、新建狀態(tài)31 .當(dāng)線程因異常而退出run()后,其所處狀態(tài)為()A,阻塞狀態(tài) Bo運(yùn)行狀態(tài)C、就緒狀態(tài)D、結(jié)束狀態(tài)32 . wait()方法首先是哪個(gè)類的方
10、法?()A. Object B. Thread. C. Runnable D. File33 .如果我們想實(shí)現(xiàn) 先把要寫入文件的數(shù)據(jù)先緩存到內(nèi)存中,再把緩存中的數(shù)據(jù)寫入文件中”的功能時(shí),則需要使用下列哪個(gè)類?()A. FileReader B. OutputStream C. FilterOutputStream D. DataOutputStream34 .用read()方法讀取文件內(nèi)容時(shí),判斷文件結(jié)束的標(biāo)記為()A. 0 B. 1 C -1 D.無標(biāo)記35 .以下哪個(gè)方法只對(duì)使用了緩沖的流類起作用?()A. read() B. write() C skip() D. flush()36 .
11、 Java 提供白類InetAddress來進(jìn)行有關(guān)Internet 地址的操作.()A. Socket B.ServerSocket C. DatagramSocket D InetAddress37 . InetAddress類中哪個(gè)方法可實(shí)現(xiàn)正向名稱解析?()A. isReachable() B. getHostAddress() C. getHosstName() D.getByName()38 .為了獲取遠(yuǎn)程主機(jī)的文件內(nèi)容,當(dāng)創(chuàng)建 URL對(duì)象后,需要使用哪個(gè)方法獲取信息()A.getPort() B.getHost C.openStream() D.openConnection()3
12、9 . java程序中,使用TCP套接字編寫服務(wù)端程序的套接字類是()A. Socket B. ServerSocket C. DatagramSocket D.DatagramPacket40 . ServerSocket的監(jiān)聽方法accept()的返回值類型是()A. void B. Object C. Socket D. DatagramSocket41 . ServerSocket 的 getInetAddress()的返回值類型是()A. Socket B ServerSocket D.InetAddress D,.URL42 .當(dāng)使用客戶端套接字Socket創(chuàng)建對(duì)象時(shí),需要指定()
13、A .服務(wù)器主機(jī)名稱和端口B、服務(wù)器端口和文件C、服務(wù)器名稱和文件D.服務(wù)器地址和文件43 .使用流式套接字編程時(shí),為了向?qū)Ψ桨l(fā)送數(shù)據(jù),則需要使用哪個(gè)方法()A. getInetAddress() B. getLocalPort() C.getOutputStream() D.getInputStream()44 .使用UDP套接字通信時(shí),常用哪個(gè)類把要發(fā)送的信息打包?()A. String B. DatagramSocket C. MulticastSocket D.DatagramPacket45 .使用UDP套接字通信時(shí),哪個(gè)方法用于接收數(shù)據(jù)()A. read() B. receive。
14、C. accept。D. Listen()46 .若要取得數(shù)據(jù)包的中源地址,可使用下列哪個(gè)語句(A. getAddress() B. getPort() C. getName() D.getData()47.要使用java程序訪問數(shù)據(jù)庫,則必須首先與數(shù)據(jù)庫建立連接,在建立連接前,應(yīng)加載數(shù)據(jù)庫驅(qū)動(dòng)程序,該語句為()A Class.forName( Sun.jdbc.odbc.JdbcOdbcDriver")B. DriverManage.getConnection( )C.Result rs= DriverManage.getConnection( "," :&qu
15、ot; ).createStatement()D. Statement st= DriverManage.getConnection( "," :" ).createStaement()48.要使用java程序訪問數(shù)據(jù)庫,則必須首先與數(shù)據(jù)庫建立連接,該語句為(A Class.forName( Sun.jdbc.odbc.JdbcOdbcDriver")B. DriverManage.getConnection( )C.Result rs= DriverManage.getConnection( "7 :" ).createStatem
16、ent()D. Statement st= DriverManage.getConnection( :").createStaement()49. java程序與數(shù)據(jù)庫連接后,需要查看某個(gè)表中的數(shù)據(jù),使用下列哪個(gè)語句?(A. executeQuery() B.executeUpdate() C executeEdit() D.executeSelect()50. java程序與數(shù)據(jù)庫連接后,需要查看某個(gè)表中的數(shù)據(jù),使用下列哪個(gè)語句?(A. executeQuery() B.executeUpdate() C executeEdit() D.executeSelect()二、填空題1.
17、 Stdout System.out 作為PrintStream的實(shí)例,來實(shí)現(xiàn) stdout ,它代表的是 屏幕2. Stdin System.in 作為InputStream類的一個(gè)實(shí)例來實(shí)現(xiàn) stdin ,它代表的是鍵盤,你可以使用其中兩個(gè)成員函數(shù),read() 讓你從輸入中讀一個(gè)字節(jié),skip(long n)讓你在輸入中跳過n個(gè)字節(jié)。3. Java中的IO流分為兩種,一種是 字節(jié)流,另一種是 字符流,分別由四個(gè)抽象類來表示 (每種流包括輸入和輸出兩種所以一共四個(gè)):InputStream , OutputStream , Reader , Writer。它們通過重載read ()和wri
18、te ()方法定義了 6個(gè)讀寫操作方法。4. File類不是一彳固檄型的I/O類,在java.io類庫中它是唯一的 non-stream 別,既不能U 取文件內(nèi)容,也不能修改文件內(nèi)容,主要作用是收集槽案(或目金毅的相信息,例如:建立文件對(duì)象、修改文件名、設(shè)置文件屬性、測試文件屬性5. 目錄是一個(gè)包含其他文件和路徑列表的File類。當(dāng)你創(chuàng)建一個(gè) File對(duì)象目宜是目錄時(shí),isDirectory()方法返回ture。這種情況下,可以調(diào)用該對(duì)象的 String list() 方法來提取該 目錄內(nèi)部其他文件和目錄的列表6. 所有的輸出過濾流都是抽象類 的子類。(FilterOutputStream)7
19、、字符輸入流 BufferedReader 使用了 _ 技術(shù)。(Printstream)8、 InputStreamReader 負(fù)責(zé)將 Inputstream 轉(zhuǎn)化成 Reader , 而 OutputStreamWrite r 則將 Outputstream 轉(zhuǎn)化成 Writer 。實(shí)際上是通過 byte口 和 String 來關(guān)聯(lián)。9、設(shè)a.txt為當(dāng)前目錄下的一個(gè)文本文件,則以字符方式向該文件寫數(shù)據(jù)時(shí),需要建立的輸出流通道為:new FileWriter( a.txt");10 .隨機(jī)訪問文件類是 RandomAccessFile , 它實(shí)現(xiàn)了與 DataInputStrea
20、m, DataOutputStream 類同樣實(shí)現(xiàn)的接口 DataInput, DataOutput.。11 .實(shí)現(xiàn)多線程的兩種方式是: 1、繼承 Thread類;2、實(shí)現(xiàn) Runnable接口。12、取得當(dāng)前線程的語句是:Thread.currentThread();13 .主線程的名稱是 main,默認(rèn)創(chuàng)建的第一個(gè)子線程的名稱是thread-014 .可以調(diào)用 Thread類的方法 getPriority () 和setPriority ()來存取線程的優(yōu)先級(jí),線 程的優(yōu)先級(jí)界于 1 ( MIN PRIORITY )和10 ( MAX PRIORITY ) 之間,缺省是 5(NORM PR
21、IORITY )。15 .(1)當(dāng)多個(gè)線程同時(shí)運(yùn)行時(shí),會(huì)產(chǎn)生數(shù)據(jù)錯(cuò)誤及其它沖突問題。Java語言提供了線程同步控制機(jī)制,一是 鎖定共享資源,使得在任何時(shí)刻只有一個(gè)線程能夠訪問共享資源,以保持共享資源的完整和一致,二是讓互相通信的線程 運(yùn)行,以保證通信的正確性。(2)線程之間的通信有兩種方法:一是把共享變量和方法封閉在一個(gè)類中,二是利用系統(tǒng)方法 和 控制線程通信.實(shí)現(xiàn)對(duì)共享資源互拆訪問的方法是在方法聲明中加入synchronized關(guān)鍵字來聲明一個(gè)訪問共享資源的方法,或者通過synchronized關(guān)鍵字來聲明synchronized 塊。16、守護(hù)線程一般被用于在后臺(tái)為其它線程提供服務(wù)。調(diào)用方
22、法isDaemon()來判斷一個(gè)線程是否是守護(hù)線程,也可以調(diào)用方法setDaemon()將一個(gè)線程設(shè)為守護(hù)線程。17、InetAddress是用干封裝IP地址和 DNS的一個(gè)類。18、TCP/IP套接字是最可靠的雙向流協(xié)議。等待客戶端的服務(wù)器使用ServerSocket類,而要連接到服務(wù)器的客戶端則使用Socket類。19、包中提供了一個(gè)類 MulticastSocket.允許數(shù)據(jù)報(bào)以廣播方式發(fā)送到該端口的 所有客戶。20.在TCP/IP協(xié)議的傳輸層除了 TCP協(xié)議之外還有一個(gè) UDP協(xié)議。幾個(gè)標(biāo)準(zhǔn)的應(yīng)用層 協(xié)議HTTP, FTP, SMTP-使用的都是 TCP協(xié)議。UDP協(xié)議主要用于需要很強(qiáng)
23、的實(shí)時(shí)交 互性的場合,如 網(wǎng)絡(luò)游戲,視頻會(huì)議 等21、當(dāng)我們得到一個(gè) URL對(duì)象后,就可以通過它讀取指定的WWWe源。這時(shí)我們將使用URL的方法 openStream(),其定義為:InputStream openStream() ;22、URL的構(gòu)造方法都聲明拋棄非運(yùn)行時(shí)異常MalformedURLException ,因此生成 URL對(duì)象時(shí),我們必須要對(duì)這一例外進(jìn)行處理,通常是用 try-catch 語句進(jìn)行捕獲。23、一個(gè)Statement對(duì)象,可以執(zhí)行多個(gè)sql語句以后,批量更新。這多個(gè)語句可以是 delete、 update、insert 等或兼有24、Java數(shù)據(jù)庫操作基本流程:取
24、得數(shù)據(jù)庫連接 、執(zhí)行sql語句、處理執(zhí)行結(jié)果、釋放數(shù)據(jù)庫連接。25、下列程序的功能是在監(jiān)控臺(tái)上每隔一秒鐘顯示一個(gè)字符串“Hello ”,能夠填寫在程序中下劃線位置,使程序完整并能正確運(yùn)行的語句是public class Test implements Runnablepublic static void main(String args口)Test t=new Test();Thread tt=new Thread(t);tt.start();public void run()for(;)try;catch( e)System.put.println("Hello");答:
25、Thread.sleep(1000)InterruptedException三、簡答與程序分析、填空、設(shè)計(jì)題第一部分:簡答1、線程的生命期內(nèi)包括哪些狀態(tài)?答:新建狀態(tài)、就緒狀態(tài)、運(yùn)行狀態(tài)、阻塞狀態(tài)、死亡狀態(tài)見下圖:各狀態(tài)之間的切換關(guān)系2、什么是線程的新建狀態(tài)?答:線程對(duì)象已經(jīng)創(chuàng)建,還沒有在其上調(diào)用start()方法。3、什么是線程的可運(yùn)行狀態(tài)?答:當(dāng)線程有資格運(yùn)行,但調(diào)度程序還沒有把它選定為運(yùn)行線程時(shí)線程所處的狀態(tài)。當(dāng)start()方法調(diào)用時(shí),線程首先進(jìn)入可運(yùn)行狀態(tài)。在線程運(yùn)行之后或者從阻塞、等待或睡眠 狀態(tài)回來后,也返回到可運(yùn)行狀態(tài)。4、什么是線程的死亡態(tài)?答:當(dāng)線程的run()方法完成時(shí)就
26、認(rèn)為它死去。這個(gè)線程對(duì)象也許是活的,但是,它已經(jīng)不是一個(gè)單獨(dú)執(zhí)行的線程。線程一旦死亡,就不能復(fù)生。如果在一個(gè)死去的線程上調(diào)用start()方法,會(huì)拋出 java.lang.IllegalThreadStateException 異常。5、調(diào)用join()方法有何作用?答:保證當(dāng)前線程停止執(zhí)行,直到該線程所加入的線程完成為止。然而,如果它加入的線程沒有存活,則當(dāng)前線程不需要停止。6.現(xiàn)有字符串S="hello,java!",則以此字符串生成待發(fā)送DatagramPacket包dgp的語句是:Byte口 str=s.getbytes();DatagramPacket dgp=n
27、ew DatagramPacket(str, str.length(),目 的主機(jī),目 的端口 );7、介紹使用 java Socket創(chuàng)建客戶端 Socket的過程。答:trySocket socket=new Socket(目標(biāo)主機(jī),目標(biāo)端口 );catch(IOException e)System.out.println("Error:"+e); 8、介紹使用java ServerSocket創(chuàng)建服務(wù)器端 ServerSocket的過程。ServerSocket server=null; try server=new ServerSocket(監(jiān)聽端口); catch
28、(IOException e) System.out.println("can not listen to :"+e); Socket socket=null; try socket=server.accept(); catch(IOException e) System.out.println("Error:"+e);9、寫出一種使用java流式套接式編程時(shí),創(chuàng)建雙方通信通道的語句。 答:PrintStream os=new PrintStream(new BufferedOutputStreem(socket.getOutputStream();Da
29、taInputStream is=new DataInputStream(socket.getInputStream();PrintWriter out=new PrintWriter(socket.getOutStream(),true);BufferedReader in=new ButfferedReader(new InputSteramReader(Socket.getInputStream();10、對(duì)于建立功能齊全的Socket,其工作過程包含以下四個(gè)基本的步驟:(1)創(chuàng)建 Socket;(2) 打開連接到 Socket的輸入/出流;(3)按照一定的協(xié)議對(duì)Socket進(jìn)行讀/寫操
30、作;(4)關(guān)閉 Socket.11、簡述基于TCP及UDP套接字通信的主要區(qū)別答:TCP,可靠,傳輸大小無限制,但是需要連接建立時(shí)間,差錯(cuò)控制開銷大。UDP,不可靠,差錯(cuò)控制開銷較小,傳輸大小限制在64K以下,不需要建立連接。12、寫出 DatagramSocket的常用構(gòu)造方法:答:DatagramSocket ();DatagramSocket (int prot);DatagramSocket(int port, InetAddress laddr)port指明socket所使用的端口號(hào),如果未指明端口號(hào),則把 socket連接到本地主機(jī)上 一個(gè)可用的端口。laddr指明一個(gè)可用的本地地
31、址。13、介紹一下DatagramPacket的常用構(gòu)造方法:DatagramPacket (byte buf,int length );DatagramPacket(byte buf, int length, InetAddress addr, int port);DatagramPacket(byte口 buf, int offset, int length);DatagramPacket(byte buf, int offset, int length, InetAddress address, int port);其中,buf中存放數(shù)據(jù)報(bào)數(shù)據(jù),length為數(shù)據(jù)報(bào)中數(shù)據(jù)的長度,addr
32、和port旨明目的地址,offset指明了數(shù)據(jù)報(bào)的位移量。14、在接收端接收數(shù)據(jù)報(bào)的主要語句:答: byte buf =new byten;DatagramPacket packet=new DatagramPacket(buf, n);Socket.receive (packet);15、寫出java程序中用Statement來執(zhí)行sql查詢與更新語句String sql;表示查詢或更新的操作語句;Statement sm = cn.createStatement();/cn 表示數(shù)據(jù)庫連接sm.executeQuery(sql); 執(zhí)行數(shù)據(jù)查詢語句(select) sm.executeUp
33、date(sql);/ 執(zhí)行數(shù)據(jù)更新語句( delete、update insert、drop 等) statement.close();16. 什么叫流?流式輸入輸出有什么特點(diǎn)?17. Java流被分為字節(jié)流、字符流兩大流類,兩者有什么區(qū)別?18. File類有哪些構(gòu)造函數(shù)和常用方法?16 .答:所謂流是指同一臺(tái)計(jì)算機(jī)或網(wǎng)絡(luò)中不同計(jì)算機(jī)之間有序運(yùn)動(dòng)著的數(shù)據(jù)序列,Java把這些不同來源和目標(biāo)的數(shù)據(jù)都統(tǒng)一抽象為數(shù)據(jù)流。數(shù)據(jù)流可分為輸入流和輸出流, 輸入流代表從其他設(shè)備流入計(jì)算機(jī)的數(shù)據(jù)序列,輸出流代表從計(jì)算機(jī)流向外部設(shè)備的數(shù)據(jù)序列。流式輸入輸出的特點(diǎn)是數(shù)據(jù)的獲取和發(fā)送沿?cái)?shù)據(jù)序列的順序進(jìn)行,即每一個(gè)
34、數(shù)據(jù)都必須等待排在它前面的數(shù)據(jù),等前面的數(shù)據(jù)讀入或送出之后才能被讀寫。所以流和隊(duì)列一樣,只能以先進(jìn)先出”的方式對(duì)其中的數(shù)據(jù)進(jìn)行讀寫,而不能隨意選擇讀寫的位置。17 .答:兩者都作為Object類的直接子類,基本輸入流(Inputstream )和基本 輸出流(Outputstream)是處理以8位字節(jié)為基本單位的字節(jié)流類; Reader和 Writer類是專門處理16位字符流的類。18 .答:構(gòu)造函數(shù)有:(1) public File(String pathname):創(chuàng)建一個(gè)對(duì)應(yīng)于參數(shù) pathname的 File 類對(duì)象。參數(shù) pathname 是包含目錄和文件名的字符串。如果沒有文件名,
35、則代表目錄。(2) public File(String parent , String child):該構(gòu)造函數(shù)將 pathname分成兩部分 parent 和 child ,參數(shù)parent表示目錄或文件所在路徑,參數(shù) child表示目錄或文件名稱。(3) public File(File parent, String child):該構(gòu)造函數(shù)與上面一個(gè)不同在于將parent的參數(shù)類型由String變?yōu)镕ile,代表parent是一個(gè)已經(jīng)創(chuàng)建的 File類文件對(duì)象(指向目錄)。 常用方法有:(1) public boolean canWrite():返回文件是否可寫。(2) public
36、boolean canRead():返回文件是否可讀。(3) public boolean createNewFile():當(dāng)文件不存在時(shí)創(chuàng)建文件。19.位置指針的作用是什么?RandomAccessFile類提供了哪些方法實(shí)現(xiàn)對(duì)指針的控制?19.答:要實(shí)現(xiàn)對(duì)文件的隨機(jī)讀取,也就是在文件的任何位置執(zhí)行讀寫數(shù)據(jù)的操作,需要一個(gè)指針來指定讀寫的位置。在創(chuàng)建 RandomAccessFile類對(duì)象的同時(shí),系統(tǒng)自動(dòng)創(chuàng)建了一個(gè) 指向這個(gè)文件開頭的指針,當(dāng)執(zhí)行讀寫操作后,指針自動(dòng)指向被讀寫數(shù)據(jù)之后的第一個(gè)字節(jié)處。指針初始值是 0,每讀/寫一個(gè)字節(jié),指針自動(dòng)增加1。RandomAccessFile類提供了一
37、些控制指針移動(dòng)的方法。public long getFilePointer();獲取當(dāng)前指針指向文件的位置。pulbic void seek(long pos);將指針移動(dòng)到參數(shù)pos指定的位置。public int skipBytes(int n);指針從當(dāng)前位置向后移動(dòng)n個(gè)字節(jié)位置,并返回指針實(shí)際移動(dòng)的字節(jié)數(shù)。第二部分:分析程序功能或完成程序2、利用文件輸入輸出流編寫一個(gè)實(shí)現(xiàn)文件拷貝的程序,源文件名和目標(biāo)文件名通過命令行 參數(shù)傳入。答:import java.io.*;class CopyFilepublic static void main(String args) String fil
38、e1,file2 ;int ch = 0 ;try file1=args0;file2=args1;FileInputStream fis = new FilelnputStream(filel);FileOutputStream fos=new FileOutputStream(file2);while (ch=fis.read()!=-1)fos.write(ch);fis.close();fos.close();catch(FileNotFoundException e)System.out.println("源文件:未找到!");catch(ArrayIndexOu
39、tOfBoundsException e)System.out.println("缺少運(yùn)行參數(shù)!");System.exit(-1);catch (IOException e)System.out.println(e.toString();4、編寫一個(gè)程序,從鍵盤輸入一串字符,統(tǒng)計(jì)這串字符中英文字母、數(shù)字、其他符號(hào)的字 符數(shù)。4 .答:import java.io.*;public class Countpublic static void main(String args)int x=0,y=0,z=0;int ch;trywhile(ch=System.in.read(
40、)!='r')if(ch>='A'&&ch<='Z'11ch>='a'&&ch<='z')x+;else if(ch>='0'&&ch<='9')y+;elsez+;catch(IOException e)System.out.println(e.toString();System.out.println("英文字母:"+x);System.out.println("數(shù)字
41、字符:"+y);System.out.println("其它字符:"+z);5 .編寫一個(gè)程序,從鍵盤輸入一串字符,從屏幕輸出并將其存入a.txt文件中。6 .答:import java.io.*;public class InFilepublic static void main(String口 args) int ch;tryFileOutputStream out=new FileOutputStream("a.txt");while(ch=System.in.read()!='r')System.out.write(ch
42、);out.write(ch);out.close();System.out.write('n');catch(IOException e)System.out.println(e.toString();System.out.println("輸出至文件完畢!"); 8、下列程序向屏幕輸出文本文件內(nèi)容:請(qǐng)完成所缺少的代碼 import java.io.*;class readtxtpublic static void main(String口 args) tryFileReader f1 = new FileReader("u.txt")
43、;BufferedReader bf1 =new BufferedReader(f1);String line;line = bf1.readLine();while( line!=null)判斷所讀的一行內(nèi)容是否為空;System.out.println(line);line = bf1.readLine();繼續(xù)讀入下一行bf1.close();關(guān)閉文件的輸入流;catch(IOException e) e.printStackTrace(); 10、請(qǐng)編寫 java 程序,訪問 所在的主頁文件答:public class URLReader public static void main
44、(String口 args) throws Exception / 聲明拋出所有例外URL tirc = new URL(" / 構(gòu)建一 URL 對(duì)象 BufferedReader in = new BufferedReader(new InputStreamReader( tirc.openStream();使用openStream得到一輸入流并由此構(gòu)造一個(gè)BufferedReader對(duì)象String inputLine;while (inputLine = in.readLine() != null ) 從輸入流不斷的讀數(shù)據(jù),直到讀完為止System.out.println(in
45、putLine); 把讀入的數(shù)據(jù)打印到屏幕上 in.close(); 關(guān)閉輸入流11、從鍵盤上輸入主機(jī)名稱,編寫類似ping的程序,測試連接效果。import .*;import java.io.*;class Ping public static void main(String args) System.out.println("請(qǐng)輸入 ping 主機(jī)名稱或地址:n");try String host = keyreadline();InetAddress ip = InetAddress.getByName(host);long t1 = System.current
46、TimeMillis();if(ip.isReachable(5000) long t2 = System.currentTimeMillis();System.out.println("nReply from "+ ip.getHostAddress() + " time<=" + (t2-t1) + "ms");System.out.println();else System.out.println("Request timed out."); catch (IOException e) System.o
47、ut.println("Request timed out."); private static String keyreadline( ) BufferedReader br = new BufferedReader(new InputStreamReader(System.in); String str = null; try str = br.readLine(); catch (lOException e) e.printStackTrace();return str; 12、設(shè)服務(wù)器端程序監(jiān)聽端口為8629,當(dāng)收到客戶端信息后,首先判斷是否是“ BYE”,若是,則
48、立即向?qū)Ψ桨l(fā)送“ BYE”,然后關(guān)閉監(jiān)聽,結(jié)束程序。若不是,則在屏幕上輸出收到 的信息,并由鍵盤上輸入發(fā)送到對(duì)方的應(yīng)答信息。請(qǐng)編寫程序完成此功能。mport .*;import java.io.*;class Serverpublic Server。 try ServerSocket ss = new ServerSocket(8629);System.out.println("服務(wù)器端已運(yùn)行,等待客戶端連接:");Socket socket = ss.accept(); /接收客戶端的連接請(qǐng)求;BufferedReader in = new BufferedReader(
49、new InputStreamReader( socket.getInputStream(); PrintWriter out = new PrintWriter( socket.getOutputStream(),true);BufferedReader br = new BufferedReader(new InputStreamReader(System.in);String line; while(true) line = (in.readLine().trim();if( line.equals("BYE") out.println("BYE"
50、);out.close();in.close(); socket.close(); br.close();ss.close(); break;System.out.println("客戶輸入為:"+ line);System.out.println("請(qǐng)輸入回答:");line=br.readLine();從鍵盤上輸入信息;out.println(line);向?qū)Ψ桨l(fā)送信息catch (IOException e) public static void main(String口 args) throws Exception new Server。;13、
51、TCP客戶端需要向服務(wù)器端8629發(fā)出連接請(qǐng)求,與服務(wù)器進(jìn)行信息交流,當(dāng)收到服務(wù)器發(fā)來的是“ BYE”時(shí),立即向?qū)Ψ桨l(fā)送“ BYE”,然后關(guān)閉連接,否則,繼續(xù)向服務(wù)器發(fā) 送信息。import java.io.*;import .*;class Client2 public Client2() tryString s;Socket socket = new Socket("服務(wù)器地址", 8629);BufferedReader in = new BufferedReader(new InputStreamReader( socket.getInputStream();Pri
52、ntWriter out = new PrintWriter( socket.getOutputStream(),true);BufferedReader line = new BufferedReader(new InputStreamReader(System.in); while(true) System.out.println("請(qǐng)向服務(wù)器輸出一條字符串:”力s=line.readLine();out.println(s);/向服務(wù)器發(fā)出信息;s=in.readLine().trim();收到服務(wù)器發(fā)來的信息;System.out.println("服務(wù)器返回的信息
53、是: ");System.out.println(s);if( s.equals("BYE") out.println("BYE");line.close();out.close();in.close();socket.close(); break; catch (IOException e) public static void main(String口 args) new Client2();14、UDP接收端import java.io.*; import .*;class Server public static void main(S
54、tring口 args) new UDPServer() ; class UDPServer public UDPServer() try DatagramSocket socket = new DatagramSocket(1986); 建立一個(gè) Socket 連接System.out.println("服務(wù)器 IP: " + InetAddress.getLocalHost().getHostAddress();顯示服務(wù)器信息while (true) /接收byte口 instr = new byte200;DatagramPacket receive = new Da
55、tagramPacket(instr, instr.length);socket.receive(receive); 接收客戶機(jī)發(fā)過來的數(shù)據(jù)String str = new String(receive.getData();/ 提取數(shù)據(jù)if(str.trim().equals("BYE")socket.close();break;System.out.println("收到客戶端消息:"+ str.trim(); 打印客戶機(jī)消息/發(fā)送System.out.print("服務(wù)器發(fā)送消息:");str = new BufferedReader(new InputStreamReader(System.in).readLine(); /得到輸入的數(shù) 據(jù)byte口 outstr = new bytestr.length();outstr = str.getBytes();DatagramPacket send = new DatagramPacket(outstr,outstr.length, receive.getAddress(), receive.getPort(); 向客戶機(jī)發(fā)送數(shù)據(jù)socket.send(send); 執(zhí)行發(fā)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030家電維修行業(yè)市場深度研究及發(fā)展前景投資可行性分析報(bào)告
- 二零二五年度安全生產(chǎn)責(zé)任書翻譯與國際化服務(wù)合同
- 2025年度汽車租賃企業(yè)車輛租賃與違章處理服務(wù)合同
- 2025版醫(yī)療器械包裝袋加工及安全認(rèn)證合同
- 2025版彩鋼板原材料采購合作協(xié)議
- 二零二五年度茶葉產(chǎn)業(yè)鏈上下游全面合作協(xié)議
- 2025版綠色環(huán)保彩鋼棚安裝服務(wù)合同范本
- 二零二五年度餐廳線上線下融合推廣承包合同
- 二零二五年旅游團(tuán)隊(duì)大巴租賃服務(wù)合同
- 2025年人工智能芯片在游戲領(lǐng)域的應(yīng)用前景報(bào)告
- 裝修改造工程施工現(xiàn)場總平面布置
- J波與J波綜合征課件
- 微整面部美學(xué)設(shè)計(jì)面部風(fēng)水設(shè)計(jì)課件
- 5噸龍門吊安裝與拆除專項(xiàng)施工方案
- 康復(fù)科護(hù)理質(zhì)量監(jiān)測指標(biāo)
- 農(nóng)藥基本常識(shí)課件
- 六年級(jí)數(shù)學(xué)分?jǐn)?shù)除法、解方程計(jì)算題 (含答案)
- 高速鐵路竣工驗(yàn)收辦法
- 擬投入公路工程施工設(shè)備檢測儀器設(shè)備表
- 新教材 人教版高中英語必修第一冊(cè)全冊(cè)各單元知識(shí)點(diǎn)提煉匯總(單詞短語語法寫作等)
- GM∕T 0031-2014 安全電子簽章密碼應(yīng)用技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論