java IO流综述以及IO流在文件传输中的应用

本文介绍了Java IO流的各类及它们的关系,重点讨论了如何通过IO流实现文件从客户端传输到服务器的过程。涉及的类包括InputStream、InputStreamReader、BufferedReader、FileInputStream、DataInputStream以及FileOutputStream。在文件传输中,利用缓冲技术提高效率,通过Socket连接完成数据的发送与接收,最终在服务器端将数据保存为文件。
摘要由CSDN通过智能技术生成

实现IO流的几种类以及它们的关系

IO流实现的目的一般分为以下几种:
1、java程序获取本地文件中的数据,并对文件执行写数据操作。
2、读取本地文件数据,并把它们通过IO流写到服务器端,再生成文件保存在服务器端。
3、服务器和客户端之间通过字符串的传输,实现交互。
我们现在着重介绍客户端和服务器之间的文件传输。下面介绍IO流涉及到的类:
1、InputStream:InputStream类是IO流中类的超类,也就是说,我们在实现别的类的时候一般先实现这个类,它代表输入,获取的是字节信息,我们可以称它为字节流。字节也是一般流传输的基本单位。它可以通过socket对象的get方法来获得。InputStream的子类很多,通过InputStream子类的实现,可以实现各种特殊化的功能,这也是java继承体系的优点所在。
2、InputStreamRead:如果我们希望在服务器和客户端之间对话,或是把本地文件中的数据取出来做分析,一般都需要把字节流转化为字符流,这里我们就需要用InputStreamRead来包装InputStream类,用InputStream的对象new一个InputStreamRead的对象,然后便可以获取字符信息。
3、BufferedReader:我们来看看这个方法,BufferedReader br = new BufferedReader(new InputStreamReader(in)); 其中in是InputStream的对象,通过new InputStreamReader(in)获取字符流对象,然后用BufferedReader来包装生成一个br对象,便可以开始读了,关于BufferedReader这个类大家可能会有疑问,它的作用是什么呢?我们可以把它看做一个工具,当我们通过new InputStreamReader(in)得到了字符流输入的对象后,我们还需要一个工具去对这些字符进行处理,从而得到我们需要的数据,比如用String temp = br.readLine();方法我们可以读取数据保存到一个字符串中。
4、FileInputStream:顾名思义,文件输入,这个类在读取本地的文件上经常会用到,它是InputStream类的一个子类,并继承一些接口,只要是为了实现和文件之间的数据交互。直接看它的使用,我们先创建一个File类的对象,它可以帮助我们找到文件的位置,如File file = new File(“E:\workspace\mayifan\src\com\myf\plane1102\data.txt”);然后我们再创建一个FileInputStream类的对象fis,FileInputStream fis = new FileInputStream(file);然后我们就可以对文件执行读的方法。似乎,我们在获取路径后,直接把文件包装为字符流并用上述的readLine方法来读取好像也可以读取。既然他们都可以实现文件的读取,那么它们有什么区别呢?FileInputStream是从文件获取字节流,一般应用在文件的读取上,和DataOutputStream配合,FileInputStream从文件获取字节,DataOutputStream把字节输出到往外部的IO通道,整个过程是连贯的,直到所有的字节数据都传输出去为止。比如可以传输给服务器端,在服务器端我们再把它生成文件,才可以对其中的内容做操作;而readLine方法是读取一行内容,返回的是字符串。因此两者在功能上是完全不同的。
5、DataInputStream:它也是InputStream的子类,它主要用于字节数据的接收,它和我们之前说的DataOutputStream功能类似,它也是文件传输的中间环节,类似于搬运工的存在。类比上面的介绍,我们还需要一个类来把字节组装为文件,它就是FileOutputStream类,在获取所有文件数据之后我们就可以在服务器端得到文件了。

如何把文件从客户端传输到服务器

这里我们贴上关键部分代码,着重介绍思路和实现过程。
1、在客户端和服务器之间建立通道,没有通道何谈传输。

            	          try {
   
				  socket = new Socket("localhost", 9999);
				} catch (IOException e) {
   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值