IO 流及 Socket 部分.docx
《IO 流及 Socket 部分.docx》由会员分享,可在线阅读,更多相关《IO 流及 Socket 部分.docx(7页珍藏版)》请在冰豆网上搜索。
![IO 流及 Socket 部分.docx](https://file1.bdocx.com/fileroot1/2022-11/24/68e08f56-cd4b-418d-9e65-828ddd647ff5/68e08f56-cd4b-418d-9e65-828ddd647ff51.gif)
IO流及Socket部分
IO流及Socket部分:
1、什么是java序列化,如何实现java序列化?
【基础】
答:
序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进
行流化。
可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之
间。
序列化是为了解决在对对象流进行读写操作时所引发的问题;
序列化的实现:
将需要被序列化的类实现Serializable接口,该接口没有需实
现的方法,implementsSerializable只是为了标注该对象是可被序列化的,然
后使用一个输出流(如FileOutputStream)来构造一个ObjectOutputStream(对
象流)对象,接着,使用ObjectOutputStream对象的writeObject(Objectobj)
方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。
2、java中有几种类型的流?
JDK为每种类型的流提供了一些抽象类以供继承,
请说出他们分别是哪些类?
【基础】
答:
字节流,字符流。
字节流继承于InputStream、OutputStream,字符流继承
于Reader、Writer。
在java.io包中还有许多其他的流,主要是为了提高性能
和使用方便。
3、文件和目录(IO)操作:
1)如何列出某个目录下的所有文件?
2)如何列出某个目录下的所有子目录?
3)如何判断一个文件或目录是否存在?
4)如何读写文件?
【基础】
答:
1)示例代码如下:
Filefile=newFile("e:
\\总结");
File[]files=file.listFiles();
for(inti=0;iif(files[i].isFile())System.out.println(files[i]);
}
2)示例代码如下:
Filefile=newFile("e:
\\总结");
File[]files=file.listFiles();
for(inti=0;iif(files[i].isDirectory())System.out.println(files[i]);
}
3)创建File对象,调用其exsit()方法即可返回是否存在,如:
System.out.println(newFile("d:
\\t.txt").exists());
4)示例代码如下:
//读文件:
FileInputStreamfin=newFileInputStream("e:
\\tt.txt");
byte[]bs=newbyte[100];
while(true){
intlen=fin.read(bs);
if(len<=0)break;
System.out.print(newString(bs,0,len));
}
fin.close();
//写文件:
FileWriterfw=newFileWriter("e:
\\test.txt");
fw.write("helloworld!
"+System.getProperty("line.separator"));
fw.write("你好!
北京!
");
fw.close();
4、写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出
现的次数。
【基础】
答:
代码如下:
publicintcountWords(Stringfile,Stringfind)throwsException{
intcount=0;
Readerin=newFileReader(file);
intc;
while((c=in.read())!
=-1){
while(c==find.charAt(0)){
for(inti=1;ic=in.read();
if(c!
=find.charAt(i))break;
if(i==find.length()-1)count++;
}
}
}
returncount;
}
5、Java的通信编程,编程题(或问答),用JAVASOCKET编程,读服务器几个
字符,再写入本地显示?
【基础】
答:
Server端程序:
packagetest;
import.*;
importjava.io.*;
publicclassServer{
privateServerSocketss;
privateSocketsocket;
privateBufferedReaderin;
privatePrintWriterout;
publicServer(){
try{
ss=newServerSocket(10000);
while(true){
socket=ss.accept();
StringRemoteIP=
socket.getInetAddress().getHostAddress();
StringRemotePort=":
"+socket.getLocalPort();
System.out.println("Aclientcomein!
IP:
"
+RemoteIP+RemotePort);
in=newBufferedReader(new
InputStreamReader(socket.getInputStream()));
Stringline=in.readLine();
System.out.println("Cleintsendis:
"+line);
out=
newPrintWriter(socket.getOutputStream(),true);
out.println("YourMessageReceived!
");
out.close();
in.close();
socket.close();
}
}catch(IOExceptione){
out.println("wrong");
}
}
publicstaticvoidmain(String[]args){
newServer();
}
}
Client端程序:
packagetest;
importjava.io.*;
import.*;
publicclassClient{
Socketsocket;
BufferedReaderin;
PrintWriterout;
publicClient(){
try{
System.out.println("TrytoConnectto127.0.0.1:
10000");
socket=newSocket("127.0.0.1",10000);
System.out.println("TheServerConnected!
");
System.out.println("PleaseentersomeCharacter:
");
BufferedReaderline=newBufferedReader(new
InputStreamReader(System.in));
out=newPrintWriter(socket.getOutputStream(),true);
out.println(line.readLine());
in=newBufferedReader(
newInputStreamReader(socket.getInputStream()));
System.out.println(in.readLine());
out.close();
in.close();
socket.close();
}catch(IOExceptione){
out.println("Wrong");
}
}
publicstaticvoidmain(String[]args){
newClient();
}
}