java习题.docx

上传人:b****5 文档编号:3305767 上传时间:2022-11-21 格式:DOCX 页数:16 大小:27.86KB
下载 相关 举报
java习题.docx_第1页
第1页 / 共16页
java习题.docx_第2页
第2页 / 共16页
java习题.docx_第3页
第3页 / 共16页
java习题.docx_第4页
第4页 / 共16页
java习题.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

java习题.docx

《java习题.docx》由会员分享,可在线阅读,更多相关《java习题.docx(16页珍藏版)》请在冰豆网上搜索。

java习题.docx

java习题

一、简答题

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_file1

lev2_file1

lev3_file3

packageorg.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;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.txt

4、在整个上述过程中,要做例外处理;如果文件创建成功,则给出提示信息。

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();

Listll=f.getFiles(newFile("d:

\\testfiledir"),"txt"||"doc");

for(Fileff:

ll){

System.out.println(ff.getPath());

}

}

publicListgetFiles(FilefileDir,StringfileType){

Listlfile=newArrayList();

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{

Listftemps=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(Stringsrc,Stringobj){

FileInputStreamfis=null;

FileOutputStreamfos=null;

try{

fis=newFileInputStream(src);

fos=newFileOutputStream(obj);

}catch(FileNotFoundExceptione){

System.out.println("文件不存在,请检查您的输入:

");

}catch(IOExceptione){

e.printStackTrace();

}

try{

intb;

while((b=fis.read())!

=-1){

fos.write(b);

}

fos.flush();

System.out.println("文件复制成功!

");

}catch(IOExceptione){

System.out.println("文件写入错误!

");

}

}

}

第六题:

编写应用程序,可以把从键盘输入的字符串读到数组中,并在屏幕上逆序输出。

(要求用流的方式实现)。

importjava.util.*;

publicclasslaji1{

publicstaticvoidmain(String[]args){

intn=100;

Scannerscanner=newScanner(System.in);

System.out.print("请输入字符串:

");

Stringyy=scanner.nextLine();

StringTokenizerfenxi1=newStringTokenizer(yy,"");

Stringstr[]=newString[n];

for(inti=0;fenxi1.hasMoreTokens();i++){

str[i]=fenxi1.nextToken();

}

for(inti=n-1;i>=0;i--){

if(str[i]!

=null)

System.out.print(str[i]+"");

}

}

}

Scannerscanner=newScanner(System.in);

System.out.print("请输入字符串:

");

Stringyy=scanner.nextLine();

StringTokenizerfenxi1=newStringTokenizer(yy);

intn=fenxi1.countTokens();

Stringstr[]=newString[n];

for(inti=0;fenxi1.hasMoreTokens();i++){

str[i]=fenxi1.nextToken();

}

for(inti=n-1;i>=0;i--){

System.out.print(str[i]+"");

}

第七题

编写应用程序,利用DataOutputStream和DataInputStream实现将Java中基本数据类型写入到一个文件和按照java基本数据类型读入到程序并打印到屏幕的功能。

publicclassTestClass

{

publicstaticvoidmain(String[]args)throwsException

{

TestClasst=newTestClass();

t.write();

t.read();

}

publicvoidwrite()throwsException

{

Stringpath=this.getClass().getClassLoader().getResource("test.txt").toURI().getPath();

OutputStreamos=newFileOutputStream(path);

DataOutputStreamdos=newDataOutputStream(os);

dos.writeDouble(Math.random());

dos.writeBoolean(true);

dos.writeInt(1000);

dos.writeInt(2000);

dos.flush();

os.close();

dos.close();

}

publicvoidread()throwsException

{

InputStreaminstream=this.getClass().getClassLoader().getResourceAsStream("test.txt");

DataInputStreamdis=newDataInputStream(instream);

doubled=dis.readDouble();

booleanb=dis.readBoolean();

//先写的先被读出来

inti1=dis.readInt();

inti2=dis.readInt();

instream.close();

dis.close();

System.out.println(d);

System.out.println(b);

System.out.println(i1);

System.out.println(i2);

}

}

第八题

编写应用程序,创建一个RandomAccessFile类的对象,实现将Java中基本数据类型写入到文件和按照java基本数据类型读入到程序并打印到屏幕的功能。

publicclassTestClass

{

publicstaticvoidmain(String[]args)throwsException

{

RandomAccessFileraf=null;

StringfileDirAndName="e:

/files/demo.txt";//文件目录及名称

Filefile=newFile(fileDirAndName);//创建欲操作的文件对象,此文件不存在则进行创建

raf=newRandomAccessFile(file,"rw");//创建随机访问读写rw的文件流

intnum=65535;

raf.writeInt(num);//写入一个int类型数据

raf.close();//关闭流

RandomAccessFileraf2=null;

StringfileDirAndName2="e:

/files/demo.txt";//文件目录及名称

Filefile2=newFile(fileDirAndName2);//创建欲操作的文件对象

raf2=newRandomAccessFile(file,"r");//创建随机访问输入r文件流

intresult=raf2.readInt();//从文件中读取一个int类型数据

System.out.println("这个int类型数据是:

"+result);

raf2.close();

}

}

第九题

编写程序:

1、实现将从键盘输入字符串按照Ascii码输入到一个文本文件中的功能;

2、从1中所生成文本文件中读入Ascii编码的数据读入到程序并转化成字符串然后输出到屏幕上。

importjava.io.*;

publicclassFileWrite{

publicstaticvoidmain(Stringargs[]){

BufferedReaderbr=null;

BufferedWriterbw=null;

BufferedReaderbr1=null;

try{

br=newBufferedReader(newInputStreamReader(System.in));//字符输入流从键盘读取数据

bw=newBufferedWriter(newFileWriter("D:

/temp/title.txt"));//字符输出流写数据到文件

br1=newBufferedReader(newFileReader("D:

/temp/title.txt"));//字符输入流从文件读取数据

str=(byte)String.charAt(int);

str=br.readLine();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 远程网络教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1