java基础-I/O操作,模拟服务器

本文详细介绍了Java中的I/O操作原理及应用,包括字节流与字符流的区别,文件的复制过程,对象序列化与反序列化的方法,以及网络编程中的TCP与UDP协议的应用场景。同时,还提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java I/O 操作

2016511

9:27

 

细管道(字节)

粗管道(字符)

源是程序--输出流

字节输出流

字符输出流

目的也是程序--输入流

字节输入流

字符输入流

Input Output

Stream流模型

源是程序--输出流

目的也是程序--输入流

try{

// 创建流对象

fin= new FileInputStream("E:/lileihanmeimei.mp3");

fout= new FileOutputStream("D:/new.mp3");

 

//操作流

//每次读取1个字节,为什么返回int而不是byte

 

byte[] buffer = new byte[1024];//做为缓冲的容器

intlength = 0;

while((length= fin.read(buffer)) != -1){

fout.write(buffer, 0, length);//length每次写入这么多个

fout.flush();

}

}

字节流

InPutStream输入流

OutputStream输出流

都是抽象类需要实现类来实现

 

对象序列化:将对象以二进制流的形式输出。

对象反序列化:将输入的二进制流转化为对象。

 

创建一个流,一定要关闭

Tcp 套接字更为安全,三次握手机制,UDP传输速度更快,但是安全性差,现多用于在线直播。

模拟服务器传值

 

//服务器

ServerSocket server= null;

try{

// 产生一个ServerSocket对象

server= new ServerSocket(9527);

while(true) {

System.out.println("开始监听......");

// 开始监听,一旦得到消息就会返回给我们一个Socket对象

Socketsocket = server.accept();

MessageThreadth = new MessageThread(socket);

th.start();

}

}

//客户端Client

Socket socket =null;

BufferedWriterbw = null;

try{

//产生Socket对象,产生时告知IP地址和端口号

socket= new Socket("127.0.0.1", 9527);

 

//通过输出流操作,发送信息。

                          //  socket.getOutputStream().write(message.getBytes());

bw= new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

bw.write(message);

bw.flush();

}

//处理线程

public void run(){

// Socket里面取消息

BufferedReaderbr = null;

try{

br= new BufferedReader(new InputStreamReader(socket.getInputStream()));

Stringstr = br.readLine();

System.out.println("客户端说:" + str);

}catch (IOException e) {

//TODO Auto-generated catch block

e.printStackTrace();

}


常用流:

ObjectStream

ByteStream

charStream

 

Reader

InputStreamReader字节流通向字符流的桥梁

FileReader用来读取字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是适当的。要自己指定这些值,可以先在FileInputStream 上构造一个 InputStreamReader。

BufferedReader从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。

可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值