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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • GridView控件

    GridView控件

    2021年11月28日
    34
  • 活动图(Activity Diagram)

    活动图(Activity Diagram)一、什么是活动图?二、活动图的基本要素?三、活动图的作用?

    2022年6月6日
    221
  • Spam Filters「建议收藏」

    Spam Filters「建议收藏」SpamFiltersSamHolden23Aug200300:001Spamisagrowingproblemforemailusers,andmanysolutionshavebeenproposed,fromapostagefeeforemailtoTuringteststosimplynotaccepting

    2022年5月21日
    32
  • Axis2创建WebService实例

    Axis2创建WebService实例Axis2创建WebService实例博客分类: Java综合WebServiceTomcatApacheWebXML   一、Axis2的下载和安装    1.可从http://ws.apache.org/axis2/ 下载Axis2的最新版本:     可以下载如下两个zip包:     axis2-1.5.4-bin.zip 

    2022年7月21日
    11
  • eclipse配置tomcat安装及配置教程_vbras部署教程

    eclipse配置tomcat安装及配置教程_vbras部署教程想用Tomcat作为服务器,必须分以下两步。首先要配置好JDK的环境变量,再去下载Tomcat的压缩包。下载、安装JDK,并且配置好环境变量1、打开浏览器,输入JDK搜索,根据搜索结果下载安装包安装应用2、先接受协议,再根据自己的电脑下载相应的JDK版本,默认安装就行了。3、配置环境变量。找到安装路径,默认安装的一般都是在这个路径下C:\ProgramFiles\Java\jdk1.8.0_774、然后点击电脑开机键,打开控制面板5、然后点击系统安全,打开进入6、点击系统7、点击“高.

    2022年9月16日
    0
  • pycharm中安装第三方库出现错误_pycharm常用第三方库

    pycharm中安装第三方库出现错误_pycharm常用第三方库我在命令行窗口用pipinstall库名的时候,ModuleNotFoundError:Nomodulenamed‘pip._internal.cli.main’这是在pycharm里报的错Traceback(mostrecentcalllast):File“f:\python\lib\runpy.py”,line193,in_run_module_as_main“main”,mod_spec)File“f:\python\lib\ru

    2022年8月26日
    3

发表回复

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

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