您好,欢迎访问三七文档
一、简答题1、什么是流?流经常按照哪几种方式分类,每种方式又将流各分为哪几类?Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种所以一共四个):InputStream,OutputStream,Reader,Writer。2、简述字符流与字节流的区别。字节流是最基本的,采用ASCII编码,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的。字符流采用Unicode编码.它是按虚拟机的encode来处理,也就是要进行字符集的转化。3、Java中关于输入输出的类和接口及相应的异常一般是在哪个包里面?标准输入输出是在java.lang包中默认加载不用import导入如果是流的输入输出以及其异常,在java.Io包中需要importjava.io.*4、Java中使用流有什么好处?一般的文件读取上传下载,网络连接,比如爬虫程序URLConnection所有的序列化反序列化实现等等5、Java中关于输入输出流的几个父类分别是什么?并各写出这几个父类的主要成员(包括变量和主要的功能函数)及功能。字节流常用基类:InputStream,OutputStream字符流常用基类:ReaderWriter转换流:InputStreamReader:字节流通向字符流的桥梁用于操作字节流的字符流对象OutputStreamWriter:字符流通向字节流的桥梁用于操作字符流的字节流对象6、画出Java中各输入输出流的继承关系图。输入流:输出流:7、按照访问介质不同,流分文几大类,各类中分别包含哪些类,并简述各类的功能。输入流和输出流,以内存为参照物,读入内存的流为输入流,从内存中读出的流为输出流。8、标准输入输出流(System.out和System.in)分别输入哪个流类。字节数据流9、字节流与字符流转换是通过什么类来支持的,并写出这些类的主要成员及其功能。这两个之间通过InputStreamReader,OutputStreamWriter来关联,实际上是通过byte[]和String来关联10、在输入输出处理中,常见的异常都有哪些,各代表什么含义?SQLException:操作数据库异常类。ClassCastException:数据类型转换异常。NumberFormatException:字符串转换为数字类型时抛出的异常。NullPointerException(空指针异常),IndexOutOfBoundsException(出界异常)java.lang.ClassNotFoundException(指定类不存在异常)java.lang.ArrayIndexOutOfBoundsException(数组下标越界)11、写出File类的各成员及其功能。创建方法删除方法判断方法获取方法文件过滤12、RandomAccessFile是通过什么来实现随机读取功能的。文件指针二、编程题第一题:编程实现,列出当前目录下所有文件和文件夹的名称。要求:如果当前目录含有子文件夹,则也递归地列出子文件夹的内容;用缩进地方式反映层次关系;文件夹的名称用尖括号括起来。例如:lev1_file1lev1_dir1lev2_file1lev1_dir2lev2_dir1lev3_file3packageorg.io.file;importjava.io.*;classFindFile{privateFilef;privateStringflname=;//用于返回所要输出的文件名privateintcount=0;//对所查询到的文件个数进行计数publicFilegetF(){returnf;}publicvoidsetF(Filef){this.f=f;}publicStringgetFlname(){returnflname;}publicvoidsetFlname(Stringflname){this.flname=flname;}publicvoidgetFileName(Filef){if(f.isFile()){System.out.println(f.getName());//如果当前对象是一个文件,则直接输出}else{Filefl[]=f.listFiles();//如果当前当想是一个目录,则通过listFiles()方法返回一个当前文件夹下的对象数组for(inti=0;ifl.length;i++){if(fl[i].isFile()){flname=fl[i].getPath()+fl[i].getName()+\n+flname;//输出返回的对象数组中文件的名称。count++;}else{this.getFileName(fl[i]);//通过递归,把返回的对象数组中属于目录的对象传递给this.getFileName(Filef);}}}}publicintgetCount(){returncount;}publicvoidsetCount(intcount){this.count=count;}}publicclassFileTest{publicstaticvoidmain(String[]args)throwsError{Filef=newFile(f:\\FTP);System.out.println(isDirectory:+f.isDirectory());FindFileff=newFindFile();ff.getFileName(f);System.out.println(共查询到+ff.getCount()+个文件);System.out.println(ff.getFlname());}}第二题:编写一个程序,用于从键盘读入信息,并存储到磁盘文件中去。要求:1、以行的方式读入姓名和学号信息,例如:张三20071215(姓名和学号中间用一个空格隔开)2、循环读入,直到用户输入“quit”或者“QUIT”结束3、程序提示要用户输入一个文件名,例如:请输入存储到的文件名:userlist.txt4、在整个上述过程中,要做例外处理;如果文件创建成功,则给出提示信息。publicclasstest1{publicstaticvoidmain(String[]args){T1();}publicstaticvoidT1(){FileWriterout;BufferedWriterbw;StringfileName=null;Stringmessage=null;Scannerscanner=newScanner(System.in);System.out.print(请输入存储到的文件名:);fileName=scanner.next();try{out=newFileWriter(fileName);bw=newBufferedWriter(out);System.out.print(\n文件创建成功!\n请输入姓名和学号信息:);while(!(message=scanner.next()).equalsIgnoreCase(quit)){bw.write(message);bw.newLine();}bw.close();out.close();}catch(Exceptione){System.out.println(文件创建失败!);}}}第三题:编写一个程序,用于从第二题存储的磁盘文件中读出信息,并显示在屏幕上。要求:1、文件名从键盘输入;2、姓名和学号分开显示,例如屏幕显示如下信息:文件userlist.txt中存储的姓名有:张三李四王五……文件userlist.txt中存储的学号有:200612152006131720061425…..importjava.util.Scanner;importjava.io.*;publicclasstest2{publicstaticvoidmain(String[]args){T2();}publicstaticvoidT2(){FileReaderread;BufferedReaderin;Scannerscanner=newScanner(System.in);StringfileName=null;Stringmessage=null;String[]buf=newString[2];String[]name=newString[10];String[]number=newString[10];intpos1=0;intpos2=0;System.out.print(请输入要读取的文件名:);fileName=scanner.next();try{read=newFileReader(fileName);in=newBufferedReader(read);while((message=in.readLine())!=null){buf=message.split();name[pos1++]=buf[0];number[pos2++]=buf[1];buf=newString[2];}}catch(Exceptione){System.out.println(该文件不存在!);}System.out.println(屏幕显示如下信息:);System.out.print(文件+fileName+中存储的姓名有:);for(inti=0;name[i]!=null;i++){System.out.print(name[i]+);}System.out.print(\n文件+fileName+中存储的学号有:);for(inti=0;number[i]!=null;i++){System.out.print(number[i]+);}}}第四题:编写程序,列出当前目录下所有后缀为.txt和.doc的文件。importjava.io.File;importjava.util.ArrayList;importjava.util.List;publicclassfile{/***@paramargs*/publicstaticvoidmain(String[]args){Jiaoguf=newJiaogu();ListFilell=f.getFiles(newFile(d:\\testfiledir),txt||doc);for(Fileff:ll){System.out.println(ff.getPath());}}publicListFilegetFiles(FilefileDir,StringfileType){ListFilelfile=newArrayListFile();File[]fs=fileDir.listFiles();for(Filef:fs){if(f.isFile()){if(fileType.equals(f.getName().substring(f.getName().lastIndexOf(.)+1,f.getName().length())))lfile.add(f);}else{ListFileftemps=getFiles(f,fileType);lfile.addAll(ftemps);}}returnlfile;}}第五题:编写程序,实现文件拷贝功能:即按照用户输入的文件名实现把第一个文件的内容拷贝到第二个文件中。importjava.io.*;publicclassCopy{publicstaticvoidmain(Stringargs[]){if(args.length!=2){System.out.println(参数不正确,无法完成复制!正确用法:);System.out.println(javaCopy源文件名目的文件名);System.exit(0);}copyFile(args[0],args[1]);}publicstaticvoidcopyFile(St
本文标题:java习题
链接地址:https://www.777doc.com/doc-2880689 .html