1、java习题一、简答题1、什么是流?流经常按照哪几种方式分类,每种方式又将流各分为哪几类? Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种所以一共四个):InputStream,OutputStream,Reader,Writer。2、简述字符流与字节流的区别。字节流是最基本的,采用ASCII编码,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的。字符流采用Unicode编码.它是按虚拟机的encode来处理,也就是要进行字符集的转化。3、Java中关于输入输出的类和接口及相应的
2、异常一般是在哪个包里面?标准输入输出是在java.lang包中 默认加载不用import导入如果是流的输入输出以及其异常,在java.Io包中 需要import java.io.*4 、Java中使用流有什么好处?一般的文件读取 上传下载,网络连接,比如爬虫程序URLConnection 所有的序列化反序列化实现等等5 、Java中关于输入输出流的几个父类分别是什么?并各写出这几个父类的主要成员(包括变量和主要的功能函数)及功能。字节流常用基类:InputStream,OutputStream字符流常用基类:Reader Writer转换流:InputStreamReader:字节流通向字符流
3、的桥梁 用于操作字节流的字符流对象OutputStreamWriter:字符流通向字节流的桥梁 用于操作字符流的字节流对象6、画出Java中各输入输出流的继承关系图。 输入流: 输出流:7、按照访问介质不同,流分文几大类,各类中分别包含哪些类,并简述各类的功能。输入流和输出流,以内存为参照物,读入内存的流为输入流,从内存中读出的流为输出流。8、标准输入输出流(System.out 和System.in)分别输入哪个流类。字节数据流9、 字节流与字符流转换是通过什么类来支持的,并写出这些类的主要成员及其功能。 这两个之间通过 InputStreamReader,OutputStreamWrite
4、r来关联,实际上是通过byte和String来关联10、 在输入输出处理中,常见的异常都有哪些,各代表什么含义? SQLException:操作数据库异常类。ClassCastException:数据类型转换异常。NumberFormatException:字符串转换为数字类型时抛出的异常。NullPointerException(空指针异常),IndexOutOfBoundsException(出界异常)java.lang.ClassNotFoundException(指定类不存在异常)java.lang.ArrayIndexOutOfBoundsException(数组下标越界)11、 写
5、出File类的各成员及其功能。创建方法删除方法判断方法获取方法文件过滤12、 RandomAccessFile 是通过什么来实现随机读取功能的。文件指针二、编程题第一题:编程实现,列出当前目录下所有文件和文件夹的名称。要求:如果当前目录含有子文件夹,则也递归地列出子文件夹的内容; 用缩进地方式反映层次关系;文件夹的名称用尖括号括起来。例如:lev1_file1 lev2_file1 lev3_file3package org.io.file; import java.io.*; class FindFile private File f; private String flname=; /用于
6、返回所要输出的文件名 private int count=0; /对所查询到的文件个数进行计数 public File getF() return f; public void setF(File f) this.f = f; public String getFlname() return flname; public void setFlname(String flname) this.flname = flname; public void getFileName(File f) if(f.isFile() System.out.println(f.getName(); /如果当前对象是
7、一个文件,则直接输出 else File fl = f.listFiles(); /如果当前当想是一个目录,则通过listFiles()方法返回一个当前文件夹下的对象数组 for (int i=0;ifl.length;i+) if(fli.isFile() flname = fli.getPath()+fli.getName()+n+flname; /输出返回的对象数组中文件的名称。 count+; else this.getFileName(fli); /通过递归,把返回的对象数组中属于目录的对象传递给this.getFileName(File f); public int getCoun
8、t() return count; public void setCount(int count) this.count = count; public class FileTest public static void main(String args) throws Error File f = new File(f:FTP); System.out.println(isDirectory:+f.isDirectory(); FindFile ff = new FindFile(); ff.getFileName(f); System.out.println(共查询到+ff.getCoun
9、t()+个文件); System.out.println(ff.getFlname(); 第二题:编写一个程序,用于从键盘读入信息,并存储到磁盘文件中去。要求:1、以行的方式读入姓名和学号信息,例如:张三 20071215 (姓名和学号中间用一个空格隔开) 2、循环读入,直到用户输入“quit”或者“QUIT”结束 3、程序提示要用户输入一个文件名,例如:请输入存储到的文件名: userlist.txt 4、在整个上述过程中,要做例外处理;如果文件创建成功,则给出提示信息。public class test1 public static void main(String args) T1();
10、 public static void T1() FileWriter out ; BufferedWriter bw; String fileName = null; String message = null; Scanner scanner = new Scanner(System.in); System.out.print(请输入存储到的文件名:); fileName = scanner.next(); try out = new FileWriter(fileName); bw = new BufferedWriter(out); System.out.print(n文件创建成功!n
11、请输入姓名和学号信息:); while( !(message = scanner.next().equalsIgnoreCase(quit) bw.write(message); bw.newLine(); bw.close(); out.close(); catch(Exception e) System.out.println(文件创建失败!); 第三题:编写一个程序,用于从第二题存储的磁盘文件中读出信息,并显示在屏幕上。要求:1、文件名从键盘输入;2、姓名和学号分开显示,例如屏幕显示如下信息:文件userlist.txt中存储的姓名有: 张三 李四 王五 文件userlist.txt中存
12、储的学号有: 20061215 20061317 20061425 .import java.util.Scanner;import java.io.*;public class test2 public static void main(String args) T2(); public static void T2() FileReader read; BufferedReader in ; Scanner scanner = new Scanner(System.in); String fileName = null; String message = null; String buf
13、= new String2; String name = new String10; String number = new String10; int pos1 = 0; int pos2 = 0; System.out.print(请输入要读取的文件名:); fileName = scanner.next(); try read = new FileReader(fileName); in = new BufferedReader(read); while(message = in.readLine() != null) buf = message.split( ); namepos1+
14、= buf0; numberpos2+ = buf1; buf = new String2; catch(Exception e) System.out.println(该文件不存在!); System.out.println( 屏幕显示如下信息:); System.out.print(文件+fileName+中存储的姓名有:); for(int i = 0; namei != null;i+) System.out.print(namei+ ); System.out.print(n文件+fileName+中存储的学号有:); for(int i = 0; numberi != null;i
15、+) System.out.print(numberi+ ); 第四题:编写程序,列出当前目录下所有后缀为 .txt和.doc的文件。import java.io.File;import java.util.ArrayList;import java.util.List;public class file /* * param args */ public static void main(String args) Jiaogu f = new Jiaogu(); List ll = f.getFiles(new File(d:testfiledir),txt|doc); for (File
16、ff : ll) System.out.println(ff.getPath(); public List getFiles(File fileDir, String fileType) List lfile = new ArrayList(); File fs = fileDir.listFiles(); for (File f : fs) if (f.isFile() if (fileType .equals(f.getName().substring( f.getName().lastIndexOf(.) + 1, f.getName().length() lfile.add(f); e
17、lse List ftemps = getFiles(f,fileType); lfile.addAll(ftemps); return lfile; 第五题:编写程序,实现文件拷贝功能:即按照用户输入的文件名实现把第一个文件的内容拷贝到第二个文件中。import java.io.*;public class Copy public static void main(String args) if(args.length!=2) System.out.println(参数不正确,无法完成复制!正确用法:); System.out.println(java Copy 源文件名 目的文件名); S
18、ystem.exit(0); copyFile(args0,args1); public static void copyFile(String src,String obj) FileInputStream fis=null; FileOutputStream fos=null; try fis=new FileInputStream(src); fos=new FileOutputStream(obj); catch(FileNotFoundException e) System.out.println(文件不存在,请检查您的输入:); catch(IOException e) e.pri
19、ntStackTrace(); try int b; while(b=fis.read()!=-1) fos.write(b); fos.flush(); System.out.println(文件复制成功!); catch(IOException e) System.out.println(文件写入错误!); 第六题:编写应用程序,可以把从键盘输入的字符串读到数组中,并在屏幕上逆序输出。(要求用流的方式实现)。import java.util.*;public class laji1 public static void main(String args) int n=100; Scanne
20、r scanner = new Scanner(System.in); System.out.print(请输入字符串: ); String yy = scanner.nextLine(); StringTokenizer fenxi1 = new StringTokenizer(yy, ); String str = new Stringn; for(int i=0;fenxi1.hasMoreTokens();i+) stri=fenxi1.nextToken(); for(int i=n-1;i=0;i-) if(stri!=null) System.out.print(stri+ );
21、 Scanner scanner = new Scanner(System.in); System.out.print(请输入字符串: );String yy = scanner.nextLine();StringTokenizer fenxi1 = new StringTokenizer(yy); int n=fenxi1.countTokens();String str = new Stringn;for(int i=0;fenxi1.hasMoreTokens();i+)stri=fenxi1.nextToken();for(int i=n-1;i=0;i-) System.out.pr
22、int(stri+ );第七题编写应用程序,利用DataOutputStream和DataInputStream实现将Java中基本数据类型写入到一个文件和按照java基本数据类型读入到程序并打印到屏幕的功能。public class TestClass public static void main(String args) throws Exception TestClass t = new TestClass(); t.write(); t.read(); public void write() throws Exception String path = this.getClass()
23、.getClassLoader().getResource(test.txt).toURI().getPath(); OutputStream os = new FileOutputStream(path); DataOutputStream dos = new DataOutputStream(os); dos.writeDouble(Math.random(); dos.writeBoolean(true); dos.writeInt(1000); dos.writeInt(2000); dos.flush(); os.close(); dos.close(); public void r
24、ead() throws Exception InputStream instream = this.getClass().getClassLoader().getResourceAsStream(test.txt); DataInputStream dis = new DataInputStream(instream); double d = dis.readDouble(); boolean b = dis.readBoolean(); / 先写的先被读出来 int i1 = dis.readInt(); int i2 = dis.readInt(); instream.close();
25、dis.close(); System.out.println(d); System.out.println(b); System.out.println(i1); System.out.println(i2); 第八题编写应用程序,创建一个RandomAccessFile类的对象,实现将Java中基本数据类型写入到文件和按照java基本数据类型读入到程序并打印到屏幕的功能。public class TestClass public static void main(String args) throws Exception RandomAccessFile raf = null;String
26、 fileDirAndName = e:/files/demo.txt; / 文件目录及名称File file = new File(fileDirAndName); / 创建欲操作的文件对象,此文件不存在则进行创建raf = new RandomAccessFile(file,rw); / 创建随机访问读写rw的文件流int num = 65535;raf.writeInt(num); / 写入一个int类型数据raf.close(); / 关闭流RandomAccessFile raf2 = null;String fileDirAndName2 = e:/files/demo.txt;
27、/ 文件目录及名称File file2 = new File(fileDirAndName2); / 创建欲操作的文件对象raf2 = new RandomAccessFile(file,r); / 创建随机访问输入r文件流int result = raf2.readInt(); / 从文件中读取一个int类型数据System.out.println(这个int类型数据是:+result);raf2.close();第九题编写程序:1、实现将从键盘输入字符串按照Ascii码输入到一个文本文件中的功能;2、从1中所生成文本文件中读入Ascii编码的数据读入到程序并转化成字符串然后输出到屏幕上。i
28、mport java.io.*;public class FileWrite public static void main(String args) BufferedReader br=null; BufferedWriter bw=null; BufferedReader br1=null; try br=new BufferedReader(new InputStreamReader(System.in);/字符输入流 从键盘读取数据 bw=new BufferedWriter(new FileWriter(D:/temp/title.txt);/字符输出流 写数据到文件 br1=new BufferedReader(new FileReader(D:/temp/title.txt);/字符输入流 从文件读取数据 str=(byte)String.charAt(int); str=br.readLine();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1