1、2020/1/19,Tarena项目部谢勇,1,CoreJavaIO&Socket部分笔试题 制作人:Daemon谢勇,。 。 。 。 。 。 。,2020/1/19,Tarena项目部谢勇,2,91、什么是java 序列化,如何实现java 序列化?,2020/1/19,Tarena项目部谢勇,3,答:序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题;序列化的实现:将需要被序列化的类实现Serializable 接口,该接口没有需实现的方法,impl
2、ements Serializable 只是为了标注该对象是可被序列化的,然后使用一个输出流(如FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream 对象的writeObject(Object obj)方法就可以将参数为obj 的对象写出(即保存其状态),要恢复的话则用输入流。,2020/1/19,Tarena项目部谢勇,4,92、java 中有几种类型的流?JDK 为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?,2020/1/19,Tarena项目部谢勇,5,答:字节流,字符流。字节流
3、继承于InputStream、OutputStream,字符流继承于Reader、Writer。在java.io 包中还有许多其他的流,主要是为了提高性能和使用方便。,2020/1/19,Tarena项目部谢勇,6,93、文件和目录(IO)操作:1)如何列出某个目录下的所有文件?2)如何列出某个目录下的所有子目录?3)如何判断一个文件或目录是否存在?4)如何读写文件?,2020/1/19,Tarena项目部谢勇,7,答:1)示例代码如下:File file = new File(“e:总结“);File files = file.listFiles();for(int i=0; ifiles.
4、length; i+)if(filesi.isFile() System.out.println(filesi);2)示例代码如下:File file = new File(“e:总结“);File files = file.listFiles();for(int i=0; ifiles.length; i+)if(filesi.isDirectory() System.out.println(filesi);3)创建File 对象,调用其exsit()方法即可返回是否存在,如:System.out.println(new File(“d:t.txt“).exists();4)示例代码如下:/
5、读文件:FileInputStream fin = new FileInputStream(“e:tt.txt“);byte bs = new byte100;while(true)int len = fin.read(bs);if(len = 0) break;System.out.print(new String(bs,0,len);fin.close();/写文件:FileWriter fw = new FileWriter(“e:test.txt“);fw.write(“hello world!“ + System.getProperty(“line.separator“);fw.wr
6、ite(“你好!北京!“);fw.close();,2020/1/19,Tarena项目部谢勇,8,94、写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。,2020/1/19,Tarena项目部谢勇,9,答:代码如下:public int countWords(String file, String find) throws Exceptionint count = 0;Reader in = new FileReader(file);int c;while (c = in.read() != -1) while (c = find.charAt(0) for (
7、int i = 1; i find.length(); i+) c = in.read();if (c != find.charAt(i) break;if (i = find.length() - 1) count+;return count;,2020/1/19,Tarena项目部谢勇,10,95、Java 的通信编程,编程题(或问答),用JAVA SOCKET 编程,读服务器几个字符,再写入本地显示?,2020/1/19,Tarena项目部谢勇,11,答:Server 端程序:package test;import .*;import java.io.*;public class Ser
8、verprivate ServerSocket ss;private Socket socket;private BufferedReader in;private PrintWriter out;public Server()try ss=new ServerSocket(10000);while(true)socket = ss.accept();String RemoteIP = socket.getInetAddress().getHostAddress();String RemotePort = “:“+socket.getLocalPort();System.out.println
9、(“A client come in!IP:“+ RemoteIP+RemotePort);in = new BufferedReader(new InputStreamReader(socket.getInputStream();String line = in.readLine();System.out.println(“Cleint send is :“ + line);out = new PrintWriter(socket.getOutputStream(),true);out.println(“Your Message Received!“);out.close();in.clos
10、e();socket.close();catch (IOException e)out.println(“wrong“);public static void main(String args)new Server();,2020/1/19,Tarena项目部谢勇,12,Client 端程序:package test;import java.io.*;import .*;public class Client Socket socket;BufferedReader in;PrintWriter out;public Client()try System.out.println(“Try to
11、 Connect to 127.0.0.1:10000“);socket = new Socket(“127.0.0.1“,10000);System.out.println(“The Server Connected!“);System.out.println(“Please enter some Character:“);BufferedReader line = new BufferedReader(new InputStreamReader(System.in);out = new PrintWriter(socket.getOutputStream(),true);out.println(line.readLine();in = new BufferedReader(new InputStreamReader(socket.getInputStream();System.out.println(in.readLine();out.close();in.close();socket.close();catch(IOException e)out.println(“Wrong“);public static void main(String args) new Client();,