java实验11 输入输出流 - 答案
- 格式:doc
- 大小:65.50 KB
- 文档页数:5
11.1、线程的概念:Thread 每个正在系统上运行的程序都是一个进程。
每个进程包含一到多个线程。
进程也可能是整个程序或者是部分程序的动态执行。
线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。
也可以把它理解为代码运行的上下文。
所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。
通常由操作系统负责多个线程的调度和执行。
多线程的概念:多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。
线程是在同一时间需要完成多项任务的时候实现的。
多线程的优点:使用线程可以把占据长时间的程序中的任务放到后台去处理用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度·11.2、答:一个线程从创建到不再有用称为线程的生命周期。
线程的生命周期可以分为4个状态:①创建(new)状态;②可运行(runnable)状态;⑧不可运行(not runnable)状态;④消亡(dead)状态。
创建状态是指创建一个线程所对应的对象的过程。
Java系统中,这些对象都是从java. lang包内一个称为Thread的类用关键字new创建的。
刚创建的线程不能执行,必须向系统进行注册、分配必要的资源后才能进入可运行状态,这个步骤是由start操作完成的。
而处于可运行状态的线程也未必一定处于运行中,它有可能由于外部的I/O请求而处于不可运行状态。
进入消亡状态后,此线程就不再存在了。
答:一个线程创建之后,总是处于其生命周期的4个状态之一中。
线程的状态表明此线程当前正在进行的活动,而线程的状态是可以通过程序来进行控制的,就是说,可以对线程进行操作来改变状态。
这些操作包括启动(start)、终止(stop)、睡眠(sleep)、挂起(suspend)、恢复(resume)、等待(wait)和通知(notify)。
每一个操作都对应了一个方法,这些方法是由软件包ng提供的。
第Ⅰ部分:实验指导实验1:Java开发环境J2SE一、实验目的(1)学习从网络上下载并安装J2SE开发工具。
(2)学习编写简单的Java Application程序.(3)了解Java源代码、字节码文件,掌握Java程序的编辑、编译和运行过程。
二、实验任务从网络上下载或从CD-ROM直接安装J2SE开发工具,编写简单的Java Application程序,编译并运行这个程序。
三、实验内容1.安装J2SE开发工具Sun公司为所有的java程序员提供了一套免费的java开发和运行环境,取名为Java 2 SDK,可以从上进行下载。
安装的时候可以选择安装到任意的硬盘驱动器上,例如安装到C:\j2sdk1.4.1_03目录下。
教师通过大屏幕演示J2SE的安装过程,以及在Windows98/2000/2003下环境变量的设置方法。
2.安装J2SE源代码编辑工具Edit Plus教师通过大屏幕演示Edit Plus的安装过程,以及在Windows98/2000/2003操作系统环境下编辑Java 原程序的常用命令的用法。
3.编写并编译、运行一个Java Application程序。
创建一个名为HelloWorldApp的java Application程序,在屏幕上简单的显示一句话"老师,你好!"。
public class HelloWorldApp{public static void main(String[] args){System.out.println("老师,你好!");}}4.编译并运行下面的Java Application程序,写出运行结果。
1:public class MyClass {2:private int day;3:private int month;4:private int year;5:public MyClass() {6:day = 1;7:month = 1;8:year = 1900;9:}10:public MyClass(int d,int m,int y) {11:day = d;12:month = m;13:year = y;14:}15:public void display(){16:System.out.println(day + "-" + month + "-" + year);17:}18:public static void main(String args[ ]) {19:MyClass m1 = new MyClass();20:MyClass m2 = new MyClass(25,12,2001);21:m1.display();22:m2.display();23:}24:}运行结果:1-1-190025-12-2001实验2:Java基本数据类型一、实验目的(1)掌握javadoc文档化工具的使用方法。
输入输出流一、实验目的:熟悉Java的文件读写机制,练习输入输出流的使用。
二、实验内容:1、键盘输入10个整数,从小到大进行排序。
2、接收键盘输入的字符串,用FileInputStream类将字符串写入文件,用FileOutputStream类读出文件内容显示在屏幕上。
3、将一个文本文件的内容按行读出,每读出一行就顺序加上行号,并写入到另一个文件中。
三、实验要求:1. 通过实验掌握文件输入输出流的使用方法;2. 程序必须能够从键盘接收字符串并保存在文件中;3. 程序必须能够读出文件内容显示在屏幕上;4. 写出实验报告。
四、实验步骤:1、键盘输入10个整数,从小到大进行排序。
package javaTest;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Gui_21 {public static void main(String[] args) throws IOException {// TODO Auto-generated method stubBufferedReader br=new BufferedReader(newInputStreamReader(System.in));String str;int array[]=new int[10];for(int i=0;i<10;i++){System.out.println("请输入一个整数:");str=br.readLine();array[i]=Integer.parseInt(str);}for(int j=0;j<9;j++){for(int k=j+1;k<10;k++){if(array[k]<array[j]){int temp=array[k];array[k]=array[j];array[j]=temp;}}}for(int m=0;m<10;m++){if(m!=9)System.out.print(array[m]+",");elseSystem.out.print(array[m]);}}}2、接收键盘输入的字符串,用FileInputStream类将字符串写入文件,用FileOutputStream类读出文件内容显示在屏幕上。
1. ( 1.0分)Java中预定义的数据类型中都有对应的常量,对于整型直接数,他的形式又有多种,以1-9开头的正负整数为十进制,以0开头的正负整数为八进制数,以0x或者0X开头的正负整数为数。
你的答案:十六进制 (得分1.0 分);参考答案:十六进制2. ( 2.0分) 一个类如果实现一个接口,那么它需要实现接口中的全部,否则该类就必须定义为。
你的答案:方法‖抽象类 (得分2.0 分);参考答案:方法‖抽象(或abstract)3. ( 3.0分) 下列程序实现从控制台输入并读取输出字符串.请将程序补充完整import java.io.*;public class CharInput {public static void main(String args[]) throws java.io.IOException{String s;InputStreamReader ir;BufferedReader in;ir=new____________(System.in);in=new____________(ir);while((s=in._________)!=null) {System.out.println(“R ead;”+s);}}}你的答案:InputStreamReader‖BufferedReader‖read line() (得分3.0 分);参考答案:InputStreamReader‖BufferedReader‖readLine( )4. ( 1.0分)线程类型中的yield()方法只能让相同优先级或者更高优先级、处于状态的线程获得运行机会。
你的答案:就绪 (得分1.0 分);参考答案:就绪5. ( 1.0分) 在非静态成员方法中,可以使用关键字访问类的其他非静态成员。
你的答案: this (得分1.0 分);参考答案:this6. ( 1.0分) Java定义的变量要求赋初值,如果没有显式赋值,整型变量获得的值是0,实型变量的值是,布尔类型数据的量是false,复合数据变量的值是分null。
2012年JAVA程序设计习题及答案191.java的输入输出流包括_______、字符流、文件流、对象流以及多线程之间通信的管道。
2.java中的非字符输出流都是________抽象类的子类。
3.java对I/O访问还提供了同步处理机制,保证某时刻只有一个线程访问一个I/O流,这就是_______4. java中的字符输出流都是抽象类________的子类。
5. DataOutputStream数据流向文件里写数据的方法为__________.答案:1. 字节流2. OutputStream3. 过滤流4. Writer5。
write()11.在编写执行JAVA程序的过程中需要用到一些工具,SUN公司为我们提供了一套JDK工具,它主要包括:javac。
exe、java.exe、_____、javap。
exe、jkb。
exe12. JAVA程序包括源代码(。
java文件)、______、由归档工具jar生成的.jar文件、对象状态序列化。
ser文件。
13. 在JAVA语言中,为将源代码翻译成______文件时产生的错误称为编译错误.而将程序在运行中产生的错误称为运行错误。
14。
Java Application应用程序的编写和执行分3步进行:编写源代码、编译源代码、_____。
15. 每个java应用程序可以包括许多方法,但必须有且只能有一个_____方法。
答案:11。
javadoc.exe(或java文档生成器)12。
由编译器生成的类(。
class文件)13. 字节码14。
解释执行15. main6。
关于对象的删除,下列说法正确的是A。
必须由程序员完成对象的清除B。
java把没有引用的对象作为垃圾收集起来并释放C。
只有当程序中调用System.gc()方法时才能进行垃圾收集D. java中的对象都很小,一般不进行删除操作。
7. 下列说法正确的是A. java中包的主要作用是实现跨平台功能B。
package语句只能放在import语句后面C. 包(package)由一组类(class)和界面(interface)组成D. 可以用#include关键词来标明来自其它包中的类;8. Applet是一个面板容器,它默认使用()布局管理器A。
习题11 课后习题答案1.常见网络端口有哪些?答案:在计算机中操作系统内部使用1-1024保留端口号,所以设计应用程序时需选择除此之外的端口。
如:20文件传输协议(默认数据口) ,80全球信息网超文本传输协议(www)。
2.如何连接和读取URL中的资源?答案:(1)通过URLConnection连接WWW:用URL的openStream()方法从网络上读取数据,若要输出数据,用类URLConnection,与URL建立连接,然后对其进行读/写操作。
(2)用URL读取WWW数据资源:在取得一个URL对象后,通过使用URL的openStream()方法,可以获得所需的特定的WWW 资源。
3.什么是套接字?有哪几种套接字?答案:套接字Socket是网络通信的应用程序接口,可以实现客户机与服务器之间的通信。
常用的TCP/IP协议的3种套接字类型有:流套接字(SOCK_STREAM);数据包套接字(SOCK_DGRAM);原始套接字(SOCK_RAW)。
流套接字用于提供面向连接、可靠的数据传输服务。
该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。
数据包套接字提供了一种无连接的服务。
该服务并不能保证数据传输的可靠性,数据有可能在传输过程中丢失或出现数据重复,且无法保证顺序地接收到数据。
原始套接字与标准套接字(标准套接字指的是前面介绍的流套接字和数据包套接字)的区别在于:原始套接字可以读写内核没有处理的IP数据包,而流套接字只能读取TCP协议的数据,数据包套接字只能读取UDP协议的数据。
因此,如果要访问其他协议发送数据必须使用原始套接字。
4.简述TCP套接字的实现过程?答案:实现TCP套接字基本步骤分为服务器端和客户端两部分。
(1)服务器端步骤创建套接字;绑定套接字;设置套接字为监听模式,进入被动接收连接请求状态;接收请求,建立连接;读/写数据;终止连接。
(2)客户端步骤创建套接字;与远程服务器程序连接;读/写数据;终止连接。
1.在Java中,下列哪个类可以用于读取文本文件的字符?o A. FileInputStreamo B. FileReadero C. BufferedReadero D. InputStreamReader答案: B解析: FileReader是Java中用于读取文本文件字符的类,它建立于文件的基础上。
2.C语言中,使用fscanf函数从文件读取数据,其返回值表示什么?o A. 成功读取的字符数o B. 文件中的总字符数o C. 成功读取的数据项的数量o D. 文件的大小答案: C解析: fscanf函数返回成功读取和转换的数据项的数量。
3.下列哪个类用于在Java中创建输出文件流?o A. FileWritero B. FileOutputStreamo C. BufferedWritero D. OutputStreamWriter答案: B解析: FileOutputStream用于在Java中创建输出文件流。
4.假设你在C语言中使用fopen函数打开一个文件,但文件不存在于指定路径,函数将返回什么?o A. 正常文件指针o B. NULLo C. 错误代码o D. 空字符串答案: B解析: 如果文件不存在或无法打开,fopen将返回NULL。
5.在Java中,FileInputStream和FileOutputStream类是用于处理哪种类型的文件的?o A. 二进制文件o B. 字符文件o C. 文本文件o D. 图像文件答案: A解析: FileInputStream和FileOutputStream是用于读写二进制文件的。
6.C语言中的fwrite函数用于将数据写入文件。
假设你有一个结构体,你如何保证其完全写入文件?o A. 使用fwrite函数并指定结构体的大小o B. 使用fprintf函数o C. 使用fputc函数o D. 使用fputs函数答案: A解析: fwrite函数可以用于写入任意类型的数据,通过指定数据的大小确保结构体完全写入。
实验输入输出流一、实验目的1、掌握文件字节流的用法;2、掌握文件字符流的用法;3、掌握缓冲流的用法;二、实验内容与步骤1、编写程序,实现将诗句写入c:\小池.txt文件中,然后再从该文件中读出并打印输出。
宋诗《小池》作者:杨万里泉眼无声惜细流,树荫照水弄轻柔。
小荷才露尖尖角,早有蜻蜓立上头。
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.util.Scanner;public class PoemWrite {public static void main(String[] args) {Scanner reader=new Scanner(System.in);String s;try{FileWriter outOne=new FileWriter("c:\\小池.txt");BufferedWriter outTwo=new BufferedWriter(outOne);while(!(s=reader.nextLine()).equals("0")){outTwo.write(s);outTwo.newLine();}outTwo.flush();outTwo.close();outOne.close();FileReader inOne=new FileReader("c:\\小池.txt");BufferedReader inTwo=new BufferedReader(inOne);while((s=inTwo.readLine())!=null){System.out.println(s);}inOne.close();inTwo.close();}catch(IOException e){System.out.println(e.getMessage());}}}2、分别使用FileWriter和BufferedWriter向文件写入十万个字符,比较用时的多少。
习题11一.是非题1.InputStream类能够被实例化。
( 错)2.从键盘流向内存的数据流是输入流。
( 对)3.FileReader是用文件字节流的的读操作。
( 错)4.打开一个文件时不可能会产生IOException。
( 错)5.Java的标准输入对象是System.in。
( 对)二.选择题1.InputStream和OutputStream处理的数据是B。
A. 位B. 字节C. 字符D. 任意类型2.以下哪一个类的对象可以是DataInputStream的构造函数的参数?CA. FileB. StringC. FileInputStreamD. FileOutputStream3.下列不是java的输入输出流的是CA. 文本流B. 字节流C. 字符流D. 文件流4.下列属于文件输入输出类的是(A)A. FileInputStream和FileOutputStreamB. BufferInputStream和BufferOutputStreamC. DataInputStream和DataOutputStreamD. 以上都是5.下面对File类构造函数使用不正确的是?( D )A. File file1=new File("c:\\病历目录");B. File file2=new File("c:\\病历目录","myfile.txt");C. File file3=new File("c:\\病历目录");File file4=new File(file3, "myfile.txt");D. File file5=new File("病历目录.txt");File file6=new File(file5, "myfile.txt");6.要在磁盘上创建一个文件,可以使用哪些类的实例?( D )A. FileOutputStreamB. RandomAccessFileC.FileD.以上都可以三.填空题1.按照流的方向来分,I/O流分为输入流和输出流。
Java输入输出练习题及答案//******************************************************************** /*李白:春思燕草如碧丝,秦桑低绿枝。
当君怀归日,是妾断肠时。
春风不相识,何事入罗帏?*/public class l1 {public static void main(String[] args) {System.out.print(" 李白:春思\n\n");System.out.println("燕草如碧丝,秦桑低绿枝");System.out.println("当君怀归日,是妾断肠时");System.out.println("春风不相识,何事入罗帏");System.out.print("\n\n");}}//******************************************************************** /*********************/public class l2 {public static void main(String[] args) {System.out.println(" *");System.out.println(" *****");System.out.println(" *******");System.out.println(" *****");System.out.println(" *");System.out.print("\n\n");}}//******************************************************************** /*日一二三四五六1 2 3 45 6 7 8 9 10 1112 13 14 15 16 17 18*/public class l3 {public static void main(String[] args) {System.out.print("\t日\t一\t二\t三\t四\t五\t六\n\t\t\t\t1\t2\t3\t4\n\t5\t6\t7\t8\t9\t10\t11\n\t12\t13\t14\t15\t16\t17\t18\n\n\n");}}//******************************************************************** /***************************************人事管理系统1、添加用户2、查询用户3、退出系统***************************************/public class l4 {public static void main(String[] args) {System.out.print("******************************************\n\t人事管理系统\n\t1、添加用户\n\t2、查询用户\n\t2、退出系统\n******************************************\n\n");}}//******************************************************************** /*·曾造·程过·康仲伯·李敦诗*/public class l5 {public static void main(String[] args) {System.out.print("姓名:\n\b曾造\n\b陈过\n\b康仲伯\n\b李敦诗\n\n");}}//********************************************************************/*** ** ** * * * * * * **/public class l6 {public static void main(String[] args) {System.out.println(" *");System.out.println(" * *");System.out.println(" * *");System.out.println(" *********");System.out.print("\n\n");}}//******************************************************************** /*IT富豪榜排名序号名字身家1 李彦宏200亿2 马化腾150亿3 马云100亿4 陈天桥60亿*/public class l7 {public static void main(String[] args) {System.out.print("\tIT富豪榜排名\n序号\t名字\t身家\n1\t李彦宏\t200亿\n2\t马化腾\t200亿\n3\t马云\t150亿\n4\t陈天桥\t60亿");}}//******************************************************************** //定义3个整形变量,分别是3,4,5,计算他们的和public class l1{public static void main(String[] args) {int ai=3,bi=4,ci=5;System.out.println("a+b+c="+(ai+bi+ci));System.out.println();}}//******************************************************************** //输入打狗的包子数,获得屎的个数,注意:2个包子一坨屎public class l1{public static void main(String[] args) {int bao=21;System.out.println("屎的个数是"+(bao/2));System.out.println(); }}//******************************************************************** //定义2个字符串型变量,分别值为“hello”和“world”,并将他们进行拼接,打印输出public class l1{public static void main(String[] args) {String he="hello",wo="world";System.out.println(he+wo);System.out.println();}}//******************************************************************** //定义一个变量保存正方形的边长,计算此正方形的周长,及面积public class l1{public static void main(String[] args) {int bian=5;System.out.println("正方形的周长="+(4*bian)+",正方形的面积"+bian*bian);System.out.println();}}//******************************************************************** /*定义一个变量记录天数=10,计算10天共有多少小时。
一、单选题1、下面哪个类同时实现了DataInput和DataOutput接口?()A.DataInputStreamB.DataOutputStreamC.RandomAccessFileD.DataIOStream正确答案:C2、如果需要从文件中读取数据,则可以在程序中创建对象的类是()A.FileInputStreamB.FileOutputStreamC.DataOutputStreamD.FileWriter正确答案:A3、编译和运行下面的应用程序,并在命令行界面输入12345,则回车后屏幕输出的结果是()public class A {public static void main(String args[]) throws IOException{ BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));String str=buf.readLine();int x=Integer.parseInt(str);System.out.println(x/100);}}A.5B.45C.123D.12345正确答案:C4、实现字符流的写操作类是()。
A.FileReaderB.WriterC.FileInputStreamD.FileOutputStream正确答案:B5、实现字符流的读操作类是()。
A.FileReaderB.WriterC.FileInputStreamD.FileOutputStream正确答案:A6、要从“file.dat”文件中读出第10个字节到变量c中,下列哪个方法适合? ()A.FileInputStream in=new FileInputStream("file.dat"); intc=in.read();B.RandomAccessFile in=new RandomAccessFile("file.dat"); in.skip(9); int c=in.readByte();C.FileInputStream in=new FileInputStream("file.dat"); in.skip(9); int c=in.read();D.FileInputStream in=new FileInputStream("file.dat"); in.skip(10); int c=in.read();正确答案:C7、下列流中哪个不属于字符流?()A.InputStreamReaderB.BufferedReaderC.FilterReaderD.FileInputStream正确答案:D8、计算机中的流是()。
JAVA输⼊输出流(.IO)补:编码⽅式在不同编码⽅式下,得到的字节流不⼀样。
import java.io.UnsupportedEncodingException;import java.util.*;import java.util.Scanner;public class Main {public static void main(String args[]) throws UnsupportedEncodingException {Scanner sc = new Scanner(System.in);String str="中华⼈民共和国";byte[] bytes = str.getBytes("GBK");//以GBK / GB2312编码转化为字节System.out.println(bytes.length);//输出字符长度:14byte[] bytes = str.getBytes("UTF-8");//以UTF-8编码转化为字节System.out.println(bytes.length);//输出字符长度:21sc.close();}}如果是新建.txt⽂件,系统⾃动在最前⾯加⼊⼏个字节在不同编码⽅式下,得到的字节流不⼀样。
基础知识输⼊:泛指对某设备进⾏数据的输⼊输出:泛指从某设备进⾏数据的输出流(Stream)是从源读取并写⼊⽬标的数据序列。
输⼊流⽤于从源读取数据。
输出流⽤于将数据写⼊⽬标。
流的类型按数据流的⽅向不同:输⼊流,输出流。
按处理数据单位不同:字节流,字符流。
(1)字节流:数据流中最⼩的数据单元是字节。
(2)字符流:数据流中最⼩的数据单元是字符, Java中的字符是Unicode编码,⼀个字符占⽤两个字节。
按功能不同:节点流,处理流。
(1)程序⽤于直接操作⽬标设备所对应的类叫节点流。
(2)程序通过⼀个间接流类去调⽤节点流类,以达到更加灵活⽅便地读写各种类型的数据,这个间接流类就是处理流。
Java输入输出知识点:1、文件和流的操作,理解字节流和字符流的概念2、异常处理的概念,自定义异常类一、选择题1、如果一个程序段中有多个catch,则程序会按如下哪种情况执行? ( )A)找到合适的例外类型后继续执行后面的catchB)找到每个符合条件的catch都执行一次C)找到合适的例外类型后就不再执行后面的catchD)对每个catch都执行一次2、程序员将可能发生异常的代码放在()块中,后面紧跟着一个或多个()块。
A) catch、try B) try、catchC) try、exception D) exception、try3、在Java语言中,在程序运行时会自动检查数组的下标是否越界,如果越界,会抛掷下面的异常( )A) SQLException B) IOExceptionC) ArrayIndexOutOfBoundsExcetion D) SecurityManager4、在Java中,关于捕获异常的语法try-catch-finally的下列描述哪些正确?( )A) try-catch必须配对使用B) try可以单独使用C) try-finally必须配对使用D) 在try-catch后如果定义了finally,则finally 肯定会执行5、给定下面的代码片断:public class Animal{public void Cat(){try{Method();}catch(ArrayIndexOutBoundsException e){System.out.println("Exception1");}catch(Exception e){System.out.println("Exception2");}finally{System.out.println("Hello World!!");}}public void Method(){//...}public static void main(String[] args){Animal.Ani=new Animal ();Ani. Cat ();}}如果函数method正常运行并返回,会显示下面的哪些信息?( )A) Hello World B) Exception1C) Exception2 D) Hello World!!6、如果下列的方法能够正常运行,在控制台上将显示什么?( )public void example(){try{unsafe();System.out.println("Test1");}catch(SafeException e){System.out.println("Test 2");}finally{System.out.println("Test 3");}System.out.println("Test 4");}A) Test 1 B) Test 2C) Test 3 D) Test 47、以下哪一项不是File类的功能: ( )A) 创建文件B) 创建目录C) 删除文件D) 拷贝文件2、下面哪个不是InputStream类中的方法: ( )A) int read(byte[]) B) void flush()C) void close() D) int available()8、构造BufferedInputStream的合适参数是哪个?A) BufferedInputStream B) BufferedOutputStreamC) FileInputStream D) FileOuterStreamE) File9、要从文件" file.dat"文件中读出第10个字节到变量C中,下列哪个方法适合? ( )A) FileInputStream in=new FileInputStream("file.dat");in.skip(9); intc=in.read();B) FileInputStream in=new FileInputStream("file.dat"); in.skip(10); intc=in.read();C) FileInputStream in=new FileInputStream("file.dat"); int c=in.read();D) RandomAccessFile in=new RandomAccessFile("file.dat"); in.skip(9);int c=in.readByte();10、以下程序发生什么异常?class A {int x;public static void main {A x;System.out.println(x.x);}}A. IOExceptionB. InterruptExceptionC. NullPointerExceptionD. DataFormatException11、设有如下方法:public void test() {try {oneMethod();System.out.println("condition 1");} catch (ArrayIndexOutOfBoundsException e) {System.out.println("condition 2");} catch(Exception e) {System.out.println("condition 3");} finally {System.out.println("finally");}}如果oneMethod正常运行,则输出结果中有哪些?A. condition 1B. condition 2C. condition 3D. finally12、设有如下代码:public void fun () {int i;try{i=System.in.read ();System.out.println("Location 1");} catch (IOException e) {System.out.println("Location 2");} finally {System.out.println("Location 3");}System.out.println("Location 4");}如果有一个IOException发生, 则输出有哪些?A. Location 1B. Location 2C. Location 3D. Location 413、设有如下代码:1 String s = null;2 if ( s != null & s.length() > 0)3 System.out.println("s != null & s.length() > 0");4 if ( s != null && s.length() > 0)5 System.out.println("s != null & s.length() > 0");6 if ( s != null || s.length() > 0)7 System.out.println("s != null & s.length() > 0");8 if ( s != null | s.length() > 0)9 System.out.println("s != null | s.length() > 0"); 以下行中哪些会产生空指针异常。
实验输入输出流
一、实验目的
1、掌握文件字节流的用法;
2、掌握文件字符流的用法;
3、掌握缓冲流的用法;
二、实验内容与步骤
1、编写程序,实现将诗句写入c:\小池.txt文件中,然后再从该文件中读出并打印输出。
宋诗《小池》
作者:杨万里
泉眼无声惜细流,
树荫照水弄轻柔。
小荷才露尖尖角,
早有蜻蜓立上头。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class PoemWrite {
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);
String s;
try{
FileWriter outOne=new FileWriter("c:\\小池.txt");
BufferedWriter outTwo=new BufferedWriter(outOne);
while(!(s=reader.nextLine()).equals("0")){
outTwo.write(s);
outTwo.newLine();
}
outTwo.flush();
outTwo.close();
outOne.close();
FileReader inOne=new FileReader("c:\\小池.txt");
BufferedReader inTwo=new BufferedReader(inOne);
while((s=inTwo.readLine())!=null){
System.out.println(s);
}
inOne.close();
inTwo.close();
}
catch(IOException e){
System.out.println(e.getMessage());
}
}
}
2、分别使用FileWriter和BufferedWriter向文件写入十万个字符,比较用时的多少。
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Random;
public class XT2 {
public static void main(String[] args) {
File f = new File("c:\\1.txt");
Long startTime,endTime;
startTime=System.currentTimeMillis();
try{
FileWriter out=new FileWriter(f);
BufferedWriter out2=new BufferedWriter(out);
for(int i=1;i<=100000;i++)
out2.write('a');
}
catch(IOException e){
System.out.println(e);
}
endTime=System.currentTimeMillis();
System.out.println(“缓冲流用时:”+endTime-startTime);
startTime=System.currentTimeMillis();
try{
FileWriter out=new FileWriter(f);
for(int i=1;i<=100000;i++)
out.write('a');
}
catch(IOException e){
System.out.println(e);
}
endTime=System.currentTimeMillis();
System.out.println(“字符流用时:”+endTime-startTime);
}
}
3、在D:\中建立学生实体类Student,包括学号,姓名和专业属性,文件名是“Student.java”。
将文件“Student.java”中的内容按行读出,并写入另一个文件中,且给每行加上行号。
public class XT3 {
public static void main(String[] args) {
File readFile=new File("d:\\Student.java"),
writeFile=new File("Hello.txt");
try{
FileReader inOne=new FileReader(readFile);
BufferedReader inTwo=new BufferedReader(inOne);
FileWriter tofile=new FileWriter(writeFile);
BufferedWriter out=new BufferedWriter(tofile);
String s=null;
int i=0;
while((s=inTwo.readLine())!=null){
i++;
out.write(i+" "+s);
out.newLine();
}
out.flush();
out.close();
tofile.close();
inOne.close();
inTwo.close();
}
catch(IOException e){
System.out.print(e.getMessage());
}
}
}
4、创建一个存储若干随机整数的文本文件,其中文件名、整数个数及范围均由键盘输入。
import java.io.*;
import java.util.*;
public class XT4 {
public static void main(String[] args) {
String fileName;
int count,min,max;
Scanner in=new Scanner(System.in);
System.out.println("输入要存储的文件名:");
fileName=in.next();
System.out.println("输入随机数个数:");
count=in.nextInt();
System.out.println("输入随机数最小值:");
min=in.nextInt();
System.out.println("输入随机数最大值:");
max=in.nextInt();
try
{
FileWriter out=new FileWriter(fileName);
int limit=max-min;
for(int i=1;i<=count;i++)
{
int number=min+(int)(Math.random()*limit);
System.out.print(number+" ");
out.write(number+" ");
}
out.close();
}
catch(Exception e)
{
e.getMessage();
}
}
}
5、用记事本程序创建一篇包含几十个英语单词的文章,要求从屏幕输出每一个单词,并统计单词的个数。
public class XT5 {
public static void main(String[] args) {
int num=0;
try{
FileReader inOne=new FileReader("1.txt");
BufferedReader inTwo=new BufferedReader(inOne);
String s,str;
StringTokenizer xiaodao;
while((s=inTwo.readLine())!=null){
xiaodao=new StringTokenizer(s," ");
while(xiaodao.hasMoreTokens()){
str=xiaodao.nextToken();
System.out.println(str);
num++;
}
}
}
catch(IOException e)
{
e.getMessage();
}
System.out.println(num);
}
}
五、实验后记。