Java — InputStream.read(),response.getOutputStream(),OutputStream().write【IO流】
一丶 FileInputStream类:
Class FileInputStream
java.lang.Object
java.io.InputStream
java.io.FileInputStream
All Implemented Interfaces:
Closeable , AutoCloseable
public class FileInputStream
extends InputStream
A FileInputStream从文件系统中的文件获取输入字节。 什么文件可用取决于主机环境。
FileInputStream用于读取诸如图像数据的原始字节流。 要阅读字符串,请考虑使用FileReader 。
从以下版本开始:
JDK1.0
另请参见:
File , FileDescriptor , FileOutputStream , Files.newInputStream(java.nio.file.Path, java.nio.file.OpenOption…)
二丶 public FileInputStream(String name)
简介:
FileInputStream(String name)
通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的路径名 name命名。
详情:
构造方法详细信息
FileInputStream
public FileInputStream(String name)
throws FileNotFoundException
通过打开与实际文件的连接创建一个FileInputStream文件,该文件由文件系统中的路径名name命名。 创建一个新的FileDescriptor对象来表示此文件连接。
首先,如果有一个安全管理器,它的checkRead方法被调用与name参数作为其参数。
如果命名文件不存在,则是一个目录而不是常规文件,或者由于某些其他原因无法打开读取,因此抛出一个FileNotFoundException 。
参数
name - 与系统相关的文件名。
异常
FileNotFoundException - 如果文件不存在,是一个目录而不是常规文件,或者由于某些其他原因无法打开阅读。
SecurityException - 如果安全管理器存在,并且其 checkRead方法拒绝对该文件的读取访问。
另请参见:
SecurityManager.checkRead(java.lang.String)
三丶 InputStream 类
org.omg.CORBA_2_3.portable
Class InputStream
java.lang.Object
java.io.InputStream
org.omg.CORBA.portable.InputStream
org.omg.CORBA_2_3.portable.InputStream
All Implemented Interfaces:
Closeable , AutoCloseable
public abstract class InputStream
extends InputStream
InputStream提供从流中读取所有映射的IDL类型。 它扩展了org.omg.CORBA.portable.InputStream。 该类定义了为CORBA 2.3添加的新方法。
从以下版本开始:
JDK1.2
另请参见:
InputStream
四丶 InputStream.read(数组)
得到数组的长度
byte[] b = new byte[1024];
length= inputStream.read(b)
有值就会返回数组长度,没值就会返回-1
五丶 OutputStream 类
compact1, compact2, compact3
java.io
Class OutputStream
java.lang.Object
java.io.OutputStream
All Implemented Interfaces:
Closeable , Flushable , AutoCloseable
已知直接子类:
ByteArrayOutputStream , FileOutputStream , FilterOutputStream , ObjectOutputStream , OutputStream , PipedOutputStream
public abstract class OutputStream
extends Object
implements Closeable, Flushable
这个抽象类是表示字节输出流的所有类的超类。 输出流接收输出字节并将其发送到某个接收器。
需要定义OutputStream子类的应用OutputStream必须至少提供一个写入一个字节输出的方法。
从以下版本开始:
JDK1.0
另请参见:
BufferedOutputStream , ByteArrayOutputStream , DataOutputStream , FilterOutputStream , InputStream , write(int)
五丶 OutputStream.write()
简介
void write(byte[] b, int off, int len)
从指定的字节数组写入 len个字节,从偏移 off开始输出到此输出流。
详情
public void write(byte[] b,
int off,
int len)
throws IOException
从指定的字节数组写入len字节,从偏移off开始输出到此输出流。 write(b, off, len)的一般合同是数组b中的一些字节按顺序写入输出流; 元素b[off]是写入的第一个字节, b[off+len-1]是此操作写入的最后一个字节。
该write的方法OutputStream调用写出在每个字节中的一个参数的写入方法。 鼓励子类覆盖此方法并提供更有效的实现。
如果b是null ,则抛出NullPointerException 。
如果off为负数,或len为负数,或off+len大于数组b的长度,则抛出IndexOutOfBoundsException 。
参数
b - 数据。
off - 数据中的起始偏移量。
len - 要写入的字节数。
异常
IOException - 如果发生I / O错误。 特别地,如果输出流关闭,则抛出IOException 。
六丶 OutputStream.close()
简介
close()
关闭此输出流并释放与此流相关联的任何系统资源。
详情
public void close()
throws IOException
关闭此输出流并释放与此流相关联的任何系统资源。 close的一般合同是关闭输出流。 封闭流不能执行输出操作,无法重新打开。
该close的方法OutputStream什么都不做。
Specified by:
close在界面 Closeable
Specified by:
close在界面 AutoCloseable
异常
IOException - 如果发生I / O错误。
七丶 InputStream.close()
同上
八丶 代码解析
//要下载哪一个文件,获取文件名String fileName = request.getParameter("fileName");fileName = new String(fileName.getBytes("iso-8859-1"), "utf-8");System.out.println("fileName:"+fileName);//找到要下载的这个文件路径 如果项目部署在安装的Tomcat下//F:\\online\\servlet\\teach\\day01\\soft\\apache-tomcat-7.0.52\\webapps\\Servlet06\\uploadString path = getServletContext().getRealPath("/upload");System.out.println("path:"+path);System.out.println("File.separator:"+File.separator);//文件名需要根据不同的浏览器进行转码,否则如果下载的文件,文件名是中文的话,就好出问题//attachment:通知浏览器以下载的形势打开这个页面response.setHeader("Content-Disposition", "attachment;fileName="+getStr(request,fileName));//输入流 InputStream inputStream = new FileInputStream(path+File.separator+fileName);//响应输出流OutputStream outputStream = response.getOutputStream();int length = 0;//桶byte[] b = new byte[1024];while ((length= inputStream.read(b)) != -1) {outputStream.write(b, 0, length);}outputStream.close();inputStream.close();}
Java — InputStream.read(),response.getOutputStream(),OutputStream().write【IO流】相关推荐
- java inputstream write_将Java InputStream的内容写入OutputStream的简便方法
回答(21) 2 years ago 如果您使用的是Java 7,那么Files(在标准库中)是最好的方法: /* You can get Path from file also: file.toPa ...
- 黑马毕向东Java课程笔记(day20-1——20-17)IO流:File类及相关方法、递归、递归的相关练习、Properties、PrintWriter类与PrintStream类、合并流与切割流
1.File类概述 File是文件和目录路径名的抽象表示形式. 用来将文件或者文件夹封装成对象,方便对文件与文件夹的属性信息进行操作. 前面说到的"流",它只能操作数据,想 ...
- 【程序员养成之路】Java基础篇 8-流进流出的IO流(二)
以下内容若有误,欢迎私信我或在下方留言,谢谢^_− 目录 IO流(二) 1.特殊操作流 1.1 标准流 1.2 打印流 1.3 对象序列化流 1.4 Properties 拓展1:比较字节流和字节缓冲 ...
- Java基础(二):集合、IO流(Zip压缩输入/输出流等)、File文件类、反射、枚举
Java基础(一):编译和解释.数据类型.变量作用域.String常用方法.数组.面向对象.异常 Java基础(二):集合.IO流(Zip压缩输入/输出流等).File文件类.反射.枚举 Java异常 ...
- Educoder–Java高级特性(第一章)- IO流【笔记+参考代码】
Educoder–Java高级特性(第一章)- IO流[笔记+参考代码] 第一关 1.下列关于字节和字符的说法正确的是(BC) A.字节 = 字符 + 编码 B.字符 = 字节 + 编码 C.字节 = ...
- java 弹出另存为_java如何实现 io流传输过来的文件,提示另存为弹出窗口?
java如何实现 io流传输过来的文件,提示另存为弹出窗口? mip版 关注:166 答案:6 悬赏:0 解决时间 2021-01-24 22:00 已解决 2021-01-24 11:06 最 ...
- Java生成二维码并以IO流的形式返回给前端展示(不需写入服务器),以及下载二维码图片
目录 场景 方案分析 第一步--引入依赖 第二步--编写工具类 第三步--编写API接口 第四步--访问测试 第五步--下载图片 场景 最近笔者做的项目中,有一个需求: 在系统中生成一个二维码,用户保 ...
- 第三次学JAVA再学不好就吃翔(part101)--IO流
学习笔记,仅供参考 文章目录 IO流 IO流的概述及其分类 FileInputStream 构造方法 成员方法 举个例子 FileOutputStream 构造方法 成员方法 举个例子 IO流 IO流 ...
- java 输入流可以合并吗_Java 使用IO流实现大文件的分割与合并实例详解
java 使用IO流实现大文件的分割与合并 文件分割应该算一个比较实用的功能,举例子说明吧比如说:你有一个3G的文件要从一台电脑Copy到另一台电脑, 但是你的存储设备(比如SD卡)只有1G ,这个时 ...
- Java基础知识(三十一)IO流(二) File类、递归、IO流基础
目录 一. File类 1.File: 2.构造方法: 3.创建功能 4.删除功能 5. 重命名功能 6.判断功能 7.基本获取功能 8.高级获取功能 9.需求: 二.递归 1.概述: 2. 递 ...
最新文章
- R语言dplyr包arrage函数排序dataframe实战:单列排序、多列排序、自定义排序
- Selenium3+python自动化009- 多选框
- MySQL慢查询日志总结
- 在Java中异步编程,同事非要用rxJava,被我一顿吐槽!
- VI编辑器的操作模式
- Ubuntu1404 开启定时任务 crontab
- 通化红灯_我们如何构建廉价,可扩展的架构来对世界进行卡通化!
- 小爱同学100个奇葩回复_小米小爱音箱Pro开箱评测,看到的不仅是全面升级更是小米loT的高速发展...
- 11 java基础之继承:区分子类方法中变量的三种变量
- 远程计算机如何访问本地,远程计算机的本地Web服务访问(本地主机与IP地址)...
- Mysql 根据经纬度计算距离
- 整合+策略:微网通联的GMP平台如何帮助企业搭建统一智慧通信架构
- 顶级程序员书单系列二:《编码-隐匿在计算机软硬件背后的语言》
- 第八届中国大学计算机设计大赛,2015年(第八届)中国大学生计算机设计大赛.PDF...
- 2022.12.23-Python100day-day05-面向对象编程
- Audit login 与 Audit logout
- MATLAB计算黎曼积分曲线围成的面积
- 查找SAPParameterID_SAP刘梦_新浪博客
- [Course] Advanced Computer Programming, Homework, week 2
- 黑客零起步——菜鸟必看!