JAVA的一些Stream
2013-03-04 10:12
232 查看
JAVA的一些Stream
(2011-06-08 18:55:16)转载▼
| 分类: JAVA |
1.InputStream
字节输入流的所有类的超类,一般我们使用它的子类,如FileInputStream,DataInputStream等.
2.OutputStream
输出字节流的所有类的超类,与InputStream对应,它的子类名与上面对应.
3.InputStreamReader
字节流通向字符流的桥梁,它将字节流转换为字符流.
4.OutputStreamWriter
是字符流通向字节流的桥梁,它将字符流转换为字节流.
------------------------
首先告诉你两个概念:字符流:你可以把它理解为字符串;字节流:你可以把它理解为二进制流
其次纠正一下你的问题;InputStream和InputStreamReader是没有可比性的!
与InputStream相对应的是Reader,InputStream是处理字节流的抽象类,Reader是处理字符流的抽象类,两个抽象类中最主要的方法都是read()方法;
同理,与OutputStream相对应的抽象类是Writer,两个抽象类中最主要的方法是writer()
最后告诉你:InputStreamReader是Reader的一个子类,Reader是他爹,InputStream是他大爷,所以不能拿他和他大爷相比较,哈哈,这么说你明白了吧;
OutputStreamWriter和OutputStream也是侄子和大爷的关系
-----------------------
项目中的例子倒是不少,只是看你是否有心自己去做例子。
比如说:做Web开发的时候,FLEX或是AJAX请求服务端一个URL,请求的信息是XML的流文件。
就可以用request.getInputStream()来接收,对流文件进行处理。
Java code
byte[] buffer=newbyte[128];
intlen=0;
InputStream inputStream=request.getInputStream();
ByteArrayOutputStream bytes=newByteArrayOutputStream();
while((len=inputStream.read(buffer))>=0)
{
bytes.write(buffer,0, len);
}
System.out.println(bytes.toString());
-------------------------------
看看我通过FileInputStream进行文件上传的例子:
Java code
importjava.io.BufferedOutputStream;
importjava.io.File;
importjava.io.FileOutputStream;
importjava.text.SimpleDateFormat;
importjava.util.Date;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importorg.apache.struts.action.Action;
importorg.apache.struts.action.ActionForm;
importorg.apache.struts.action.ActionForward;
importorg.apache.struts.action.ActionMapping;
importorg.apache.struts.upload.FormFile;
importcom.myStruts.form.UploadForm;
publicclassFileUploadActionextendsAction{
privatestaticfinalSimpleDateFormatdateFormat=newSimpleDateForma("yyyyMMddHHmmssSSS");
@Override
publicActionForward execute(ActionMapping mapping,ActionForm form,
HttpServletRequestrequest, HttpServletResponse response)throwsException{
if(((UploadForm)form).getFormFile()!=null){
//获得保存文件的FormFile对象
FormFile formFile=(FormFile)((UploadForm)form).getFormFile();
// 处理文件名 //
String oldName=formFile.getFileName();
String extendName="";
if(oldName.lastIndexOf(".")!=-1){
extendName=oldName.substring(oldName.lastIndexOf("."));
}
String newName=dateFormat.format(newDate())+extendName;
// 进行读写操作 //
File uploadFile=newFile(newName);
BufferedOutputStream bufOut=newBufferedOutputStream(newFileOutputStream(uploadFile));
byte[]totalBytes=formFile.getFileData();
bufOut.write(totalBytes);
bufOut.flush();
bufOut.close();
}
returnmapping.findForward("upload_success");
}
}
记住,Java提供了很多类处理各种输入输出,它们分别是处理字节流,字符流,文件流,数据流,对象流的类,一般我们用的最多的就是字节流,字符流,文件流处理类
------------------------------
概念什么的比较麻烦,可以这么理解
FileInputStream fis = new FileInputStream("c:/a.txt"); 设置读取文件的路径,只是指向文件所在位置,并不做操作,可以通过fis.read()将文件内容读出来
FileOutputStream out=new FileOutputStream("c://b.txt"); 设置写入文件的路径,同上,只是将设置要将文件写入到什么位置,给出路径而已
PrintStream p=new PrintStream(out); 将文件写入到给出的位置
Reader与Writer同上面一样,只是读写字符,不是字节
FileReader fr=new FileReader("c:/a.txt"); 设置文件路径
BufferedReader br=new BufferedReader(fr); 读取文件
FileWriter fw=new FileWriter("c://b.txt"); 设置写入路径
PrintWriter out=new PrintWriter(fw); 写入,PrintWriter(Filename)使用指定文件创建不具有自动行刷新的新 PrintWriter
-----------------------------------------
分享: 分享到新浪Qing
喜欢
阅读┊
评论
┊ 收藏
┊转载
┊ 喜欢▼
┊打印┊举报
已投稿到: | 排行榜 圈子 |
前一篇:Android开发:教您如何让Gif动画动起来
后一篇:InputStream,String,File相互转化
相关文章推荐
- JAVA 8 StreamAPI 和 lambda表达式 总结(四)--stream的一些聚合操作
- JAVA一些概念问题
- java、Android中Math的一些用法
- 关于JavaBean的一些理解
- Java 正则表达式学习总结和一些小例子
- java.io.StreamCorruptedException: invalid type code: AC错误的解决方法
- 关于一些 java初级的问题
- Java 流(Stream)、文件(File)和IO
- j2se学习中的一些零碎知识点6之DecimalFormat数字类以及java中的集合
- Java 使用 ObjectStream 时的注意事项
- Java学习过程中应该深入理解的一些重点
- java的一些网址
- java Stream 和 parallelStream比较
- java 类型转换的一些例子.
- 关于Java里的volatile的一些见解
- 整理一些常见的java及android面试题(2)
- 一些java的基础知识
- Java ( 常用类) 一些方法,新手勿喷,
- 关于Java协程和Kilim的一些概念
- 我和Java的一些往事