Java 面试之 IO 流及Socket

Java 面试之 IO 流及SocketJava 面试之 IO 流及Socket

大家好,又见面了,我是你们的朋友全栈君。

1、什么是java 序列化,如何实现java 序列化?【基础】

答:序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题;序列化的实现:将需要被序列化的类实现Serializable 接口,该接口没有需实现的方法,implements Serializable 只是为了标注该对象是可被序列化的,然后使用一个输出流(如FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream 对象的writeObject(Object obj)方法就可以将参数为obj 的对象写出(即保存其状态),要恢复的话则用输入流。

2、java 中有几种类型的流?JDK 为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?【基础】

答:字节流,字符流。字节流继承于InputStream、OutputStream,字符流继承于Reader、Writer。在java.io 包中还有许多其他的流,主要是为了提高性能和使用方便。

3、文件和目录(IO)操作:

1)如何列出某个目录下的所有文件?
2)如何列出某个目录下的所有子目录?
3)如何判断一个文件或目录是否存在?
4)如何读写文件?【基础】
答:1)示例代码如下:

File file = new File("e:\\总结");
File[] files = file.listFiles();
for(int i=0; i<files.length; i++){
if(files[i].isFile());
System.out.println(files[i]
}

2)示例代码如下:

File file = new File("e:\\总结");
File[] files = file.listFiles();
for(int i=0; i<files.length; i++){
if(files[i].isDirectory()) System.out.println(files[i]);
}

3)创建File 对象,调用其exsit()方法即可返回是否存在,如:
System.out.println(new File(“d:\t.txt”).exists());
4)示例代码如下:

//读文件:
FileInputStream fin = new FileInputStream("e:\\tt.txt");
byte[] bs = new byte[100];
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.write("你好!北京!");
fw.close();

4、写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。【基础】

答:代码如下:

public int countWords(String file, String find) throws Exception
{
int count = 0;
Reader in = new FileReader(file);
int c;
while ((c = in.read()) != -1) {
while (c == find.charAt(0)) {
for (int i = 1; i < find.length(); i++) {
c = in.read();
if (c != find.charAt(i)) break;
if (i == find.length() - 1) count++;
}
}
}
return count;
}

5、Java 的通信编程,编程题(或问答),用JAVA SOCKET 编程,读服务器几个字符,再写入本地显示?【基础】

答:Server 端程序:

    package test;
    import java.net.*;
    import java.io.*;
    public class Server{ 
   
    private 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("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.close();
    socket.close();
    }
    }catch (IOException e){ 
   
    out.println("wrong");
    }
    }
    public static void main(String[] args){ 
   
    new Server();
    }
    }

Client 端程序:

 package test;
 import java.io.*;
 import java.net.*;
 public class Client { 
   
 Socket socket;
 BufferedReader in;
 PrintWriter out;
 public Client(){ 
   
 try { 
   
 System.out.println("Try to 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();
 }
 }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/106564.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号