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();
 }
 }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106563.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月22日 下午9:00
下一篇 2022年4月22日 下午9:00


相关推荐

  • ESP-Drone开源 Wi-Fi 无人机固件首次编译与错误排查

    ESP-Drone开源 Wi-Fi 无人机固件首次编译与错误排查**ESP-Drone原名ESP-Plane***代码仓库:[esp-drone](https://github.com/espressif/esp-drone)*中文文档:[gettingstarted](https://docs.espressif.com/projects/espressif-esp-drone/zh_CN/latest/index.html)*展示视频:[安装与试飞](https://b23.tv/hnLq8Z)

    2022年8月15日
    9
  • java字符串分割方法.split()的详细用法「建议收藏」

    java字符串分割方法.split()的详细用法「建议收藏」先看看它在java包中的JavaAPI是:java.lang.String方法总结 (1)按指定普通字符分割: java代码如下: Stringstring=”123@456@789″; Stringarray[]=string.split(“@”);//以@分割 for(Strings:array) System.out.println(s); 运行结果: 123 456 789 (2).

    2022年6月22日
    35
  • css两端对齐不起作用?真正可用的CSS文字两端对齐

    css两端对齐不起作用?真正可用的CSS文字两端对齐最近在工作项目中接触到 Web 界面设计的问题 要实现文字两端对齐的效果 在网上搜索了一下 差不多都是互相转帖 用的都是类似的技巧 text align justify text justify inter ideograph 但问题是 我怎么就看不到效果呢 无论是英文还是中文 在 IE 和 chrome 下都不起作用 后来 终于在 StackOverflo 上找到解决方法了 CSS 代码

    2026年3月17日
    2
  • Python环境配置教程(超详细图文版)

    Python环境配置教程(超详细图文版)一 准备相应的材料本教程需要的文件如下表所示 文件名简介作用 Anaconda3 2021 05 Windows x86 64 exeAnaconda 的安装包配置管理 python 环境 Miniconda3 py39 4 9 2 Windows x86 64 exe 精简版的 Anaconda 的安装包 电脑配置较差时使用 配置管理 python 环境 pycharm community 2021 1 3 exePyCharm 安装包 Python 代码的编辑器以上文件可在链

    2026年3月26日
    3
  • 历代iPhone的分辨率[通俗易懂]

    历代iPhone的分辨率设备 逻辑分辨率(point) 物理分辨率(pixel) 屏幕尺寸 缩放因子 PPI iPhone2G 320×480 320×480 3.5寸 @1x 163 iPhone3 320×480 320×480 3.5寸 @1x 163 iPhone…

    2022年4月15日
    164
  • 二叉查找树C++实现

    二分查找树特点:(1)若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)任意节点的左、右子树

    2021年12月18日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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