谁能给我讲讲java.io.InputStream、java.io.InputStreamReader、java.io.OutputStream、java.io.OutputStreamWriter都在哪里使用?
就是刚学J2SE的时候遇到了他们,然后是做上传的时候又碰到了他们。然后项目中从来没使用过他们,渐渐地,我对他们生疏了(本来学的时候就很抽象)除此之外,他们安安稳稳地躲在JAVA SE API的某个角落里
谁能帮我讲讲什么项目中使用他们好吗?有什么比较好的例子推荐下好吗?我看看,多了解了解这4个家伙
就是刚学J2SE的时候遇到了他们,然后是做上传的时候又碰到了他们。然后项目中从来没使用过他们,渐渐地,我对他们生疏了(本来学的时候就很抽象)除此之外,他们安安稳稳地躲在JAVA SE API的某个角落里
谁能帮我讲讲什么项目中使用他们好吗?有什么比较好的例子推荐下好吗?我看看,多了解了解这4个家伙
解决方案 »
- Java如何用实现用户在另一地方登录,而这里自动退出
- 有没有批量在后台对网站首页进行截图的源代码?
- Hibernate标注 联合主键
- 关于apache和tomcat的一个问题,谢谢
- 运行问题
- 后台管理前台显示问题
- 页面上的背景图片在1024*768中显示不完整?
- 跪求 怎样将我填写的html网页带内容的另存为一张新的html
- 请教,服务器用weblogic,在jbuilder下开发一个最简单的jsp程序(立刻接贴)
- Httpclient 4.x 模拟登录遇到“未将对象引用设置到对象的实例”问题,求指导,谢谢!
- 为什么session.removeAttribute 触发不到valueUnbound
- 怎么才能从哪里来回那里去?
字节输入流的所有类的超类,一般我们使用它的子类,如FileInputStream,DateInputStream等.
2.OutputStream
输出字节流的所有类的超类,与InputStream对应,它的子类名与上面对应.
3.InputStreamReader
字节流通向字符流的桥梁,它将字节流转换为字符流.
4.OutputStreamWriter
是字符流通向字节流的桥梁,它将字符流转换为字节流.
其次纠正一下你的问题;InputStream和InputStreamReader是没有可比性的!
与InputStream相对应的是Reader,InputStream是处理字节流的抽象类,Reader是处理字符流的抽象类,两个抽象类中最主要的方法都是read()方法;
同理,与OutputStream相对应的抽象类是Writer,两个抽象类中最主要的方法是writer()
最后告诉你:InputStreamReader是Reader的一个子类,Reader是他爹,InputStream是他大爷,所以不能拿他和他大爷相比较,哈哈,这么说你明白了吧;
OutputStreamWriter和OutputStream也是侄子和大爷的关系
其次纠正一下你的问题;InputStream和InputStreamReader是没有可比性的!
与InputStream相对应的是Reader,InputStream是处理字节流的抽象类,Reader是处理字符流的抽象类,两个抽象类中最主要的方法都是read()方法;
同理,与OutputStream相对应的抽象类是Writer,两个抽象类中最主要的方法是writer()
最后告诉你:InputStreamReader是Reader的一个子类,Reader是他爹,InputStream是他大爷,所以不能拿他和他大爷相比较,哈哈,这么说你明白了吧;
OutputStreamWriter和OutputStream也是侄子和大爷的关系
但是你们的答案,我随便在google上搜搜,都能搜出来一堆一堆得答案,正如3楼的朋友所说
我想要的答案是谁能帮我讲讲什么项目中使用他们好吗?有什么比较好的例子推荐下好吗?
也就是说,我想真正把这几个家伙用到项目中去,而不是死抠他们的概念、API
比如说:做Web开发的时候,FLEX或是AJAX请求服务端一个URL,请求的信息是XML的流文件。
就可以用request.getInputStream()来接收,对流文件进行处理。byte[] buffer = new byte[128];
int len = 0;
InputStream inputStream = request.getInputStream();
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
while((len = inputStream.read(buffer)) >= 0) {
bytes.write(buffer, 0, len);
}
System.out.println(bytes.toString());
import java.io.File;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;import com.myStruts.form.UploadForm;public class FileUploadAction extends Action {
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS");
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
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(new Date())+extendName;
/** 进行读写操作 */
File uploadFile = new File(newName);
BufferedOutputStream bufOut = new BufferedOutputStream(
new FileOutputStream(uploadFile));
byte[] totalBytes = formFile.getFileData();
bufOut.write(totalBytes);
bufOut.flush();
bufOut.close();
}
return mapping.findForward("upload_success");
}
}记住,Java提供了很多类处理各种输入输出,它们分别是处理字节流,字符流,文件流,数据流,对象流的类,一般我们用的最多的就是字节流,字符流,文件流处理类
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(File name)使用指定文件创建不具有自动行刷新的新 PrintWriter