.*; /** * 处理流之二:转换流的使用 * 1.转换流:属于字符流 * InputStreamReader:将一个字节的输入流转换为字符的输入流 * OutputStreamWriter...public class InputStreamReaderTest { /** * 此时处理异常的话,仍然应该使用try-catch-finally,此处throws偷懒了 InputStreamReader...throws IOException { FileInputStream fis = new FileInputStream("D:\\hello.txt"); //InputStreamReader...isr = new InputStreamReader(fis);//使用系统默认的字符集 //参数2指明了字符集,具体使用哪个字符集,取决于文件hello.txt保存时使用的字符集...InputStreamReader isr = new InputStreamReader(fis,"UTF-8");//使用系统默认的字符集 char[] cbuf
InputStreamReader介绍 1.构造方法. public InputStreamReader(InputStream in) {} public InputStreamReader(InputStream...in, String charsetName){} public InputStreamReader(InputStream in, Charset cs) {} public InputStreamReader...sd; //创建一个指定了底层字节输入流和默认字符编码方式的InputStreamReader流 public InputStreamReader(InputStream in) {...流 public InputStreamReader(InputStream in, String charsetName) throws UnsupportedEncodingException...public InputStreamReader(InputStream in, CharsetDecoder dec) { super(in); if (dec ==
new InputStreamReader(request.getInputStream())引起了乱码,改为 new InputStreamReader( request.getInputStream...大多数情况下,默认值足够大 2)InputStreamReader:将字节流转换为字符流。...有多个重载方法, 其中一个是: public InputStreamReader(InputStream in):该解码过程将使用file.encoding默认的字符编码,如果没有设置,则使用ISO
demo01(); demo02(); } private static void demo02() throws IOException { InputStreamReader...aa = new InputStreamReader(new FileInputStream("C:\\Users\\shanyang\\Desktop\\q3w.txt"),"gbk");...} aa.close(); } private static void demo01() throws IOException { InputStreamReader...a = new InputStreamReader(new FileInputStream("C:\\Users\\shanyang\\Desktop\\q3w.txt"));//读取ansi编码格式的文件
#InputStreamReader就是干这个的,它接收一个字节流的输入,然后判断字节流的编码专程本系统可识别的编码让你看。...InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(file)); 简单代码展示如下:...throws IOException { File file = new File("C:\\Users\\Administrator\\Desktop\\a.txt"); InputStreamReader...inputStreamReader = new InputStreamReader(new FileInputStream(file)); char ch[] = new char[10...]; int b =0 ; while ((b= inputStreamReader.read(ch,0,10))!
在使用字符流读取文本文件时(且不使用包装流时),有两种类提供读取文件方法,分别是InputStreamReader和FileReader,后者为前者子类。...引言–当文本文件编码与编译工具默认编码不同时,FileReader类的方法读取文件会出现乱码的情况,这时需要用到转换流InputStreamReader的InputStreamReader(InputStream...当字符文件编码与默认编码相同时,FileReader比InputStreamReader更加便利(可能是当遇到海量字符文件读取时,FileReader的效率更高吗?)...就要这样写 new OutputStreamWriter(new FileOutputStream(“out.txt”),“UTF-8”) 而如果要读取一个UTF-8编码的文本文件时,同样的要用 new InputStreamReader
一、字节流 1.字节流有输入和输出流,我们首先看输入流InputStream,我们首先解析一个例子(FileInputStream)。...*/ public static void main(String[] args) { int count = 0; //统计文件字节长度 try(InputStream...可以将stream.read()改成stream.read(byte[]b)此方法读取的字节数目等于字节数组的长度,读取的数据被存储在字节数组中,返回读取的字节数,InputStream还有其他方法mark...通常InputStream的read()返回-1后,说明到达文件尾,不能再读取。除非使用了mark/reset。...2.FileOutputStream 循序渐进版, InputStream是所有字节输出流的父类,子类有ByteArrayOutputStream,FileOutputStream,ObjectOutputStreanm
|–字符输入流 Reader ——抽象类 int read():一次读取一个字符 int read(char[] chs):一次读取一个字符数组 |--InputStreamReader...------extends Reader InputStreamReader = FileInputStream + 编码表(...GBK) |--FileReader ------extends InputStreamReader
Java中的 InputStream 和 OutputStream 都是 io 包中面向字节操作的顶级抽象类,关于java同步 io字节流的操作都是基于这两个的。...SocketOutputStream 文件操作:FileInputStream 和 FileOutputStream 字节数据操作:DataInputStream 和 DataOutputStream InputStream...package java.io; public abstract class InputStream implements Closeable { //MAX_SKIP_BUFFER_SIZE...IOException { } //关闭此输出流并释放所有系统资源 public void close() throws IOException { } } 使用 因为 InputStream...InputStream in = null; try { in = new ByteArrayInputStream(bytes); //部分代码省略 } catch(IOException e
InputStream和OutputStream 当你对IO有了基本的概念,接下来要谈的就是java语言对IO的封装。...笔者在这篇文章中为什么把InputStream和OutputStream放到一起来谈,因为他们从根本上来讲没多大区别,都是内存与硬件之间的数据交换。...看一看InputStream和OutputStream的源码,我们发现他们都是抽象类,而不是接口。这个问题值得思考,在这段讲完后笔者会给出自己的看法。...InputStream源码阅读 public abstract class InputStream implements Closeable { private static final int...小节 如果你能把握住InputStream和OutputStream,那IO基本上你已经算是入门了。凡是与硬件打交道,那就绕不开这两个抽象类。
适配器模式下,InputStreamReader继承了Reader, 也看得出来Reader是目标这个场景下的适配器,就是可以通过对InputStream调用Reader 相关的约定协议也就是InputStream...包装成了Reader,看起来用起来像是一个Reader,只不过底层内部是InputStream在工作简言之,就是他就是一个Reader,他的行为方式也是Reader家族的,只不过里面有一个InputStream...在干活 InputStreamReader的构造方法本质上只有一种那就是设置InputStream,这个被适配的对象另外可选的设置编码,如果不设置使用系统默认的设置系统编码的形式有:使用给定字符集 和...进行设置 StreamDecoder中提供的其他方法(除了forInputStreamReader系列)又都依赖于内部的私有方法这些私有方法又借助于InputStream 所以可以看得出来InputStreamReader... 是一个转换流,用于把InputStream转换为Reader 也就是让一个InputStream能够以Reader的方式进行工作, InputStreamReader 继承了Reader,所以他是一个
import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream...; public class InputStreamDemo { /* * InputStream字节输入流 * FileInputStream:文件字节输入流 * --...public static void main(String[] args) { File file = new File("D:/test/a.txt"); InputStream
(InputStream in)创建一个使用默认字符集的InputStream....InputStreamReader(InputStream in,String charsetName)创建使用指定字符集的InputStreamReader. 3.2.1 参数: InputStream...(InputStream in)创建一个使用默认字符集的InputStream....InputStreamReader(InputStream in,String charsetName)创建使用指定字符集的InputStreamReader....参数: InputStream in:字节输入流,用来读取文件中保存的字节 String charsetName:指定的编码表名称,不区分大小写,可以是utf-8/UTF-8,gbk/GBK,...不指定默认使用
public static InputStream workbookConvertorStream(SXSSFWorkbook workbook) { InputStream in = null
这是 cxuan 的第 34 篇原创文章 InputStream 结构概述 InputStream 是一个抽象类,这个抽象类是代表所有字节流输入的父类,应用程序需要定义一个InputStream 的子类...下面是 InputStream 的继承体系: ?...下面是针对 InputStream 的子类做的图表,从图表中可以对 InputStream 的子类有一个大致的了解 类和功能 构造器参数解释 FileInputStream 用于从文件系统的文件中读取字节...,实现管道化的概念 PipedOutputStream管道输出流,也可控制管道容量的大小 SequenceInputStream 将两个或者多个InputStream 转换成单一 InputStream...两个InputStream 对象或一个容纳 InputStream 对象的容器 Enumeration ByteArrayInputStream 允许内存的缓冲区当作 InputStream 使用 缓冲区
一图总结java nio和old io(来自MindMaster) image.png 蓝色线和红色线的含义都是 "相当于",比如,在InputStream中,抽象构件指的是InputStream类,而装饰角色指的是...FileInputStream角色 同步、异步 阻塞、非阻塞 按照知乎回答,从消息通知机制和线程状态的角度来看: 同步和异步说的是消息的通知机制(返回值 vs 状态值/通知/回调函数) 阻塞非阻塞说的是线程的状态
2.4 InputStreamReader的用法 马 克-to-win:InputStreamReader 从文字上分析:InputStream是字节流的意思,Reader是字符流的意思。...InputStreamReader这个类就是用来把字节流转换成字符流的。System.in代表控制台输入。它天生是个字节流。...参见我前面写的InputStream小节的例:2.1.1, 我们发现如果向控制台输入中文,控制台是处理不了的,但这时如果我们用InputStreamReader这个工具转换一下,问题就解决了。...InputStreamReader(InputStream in) Create an InputStreamReader that uses the default charset. */...BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); String stdinS;
InputStream : 是所有字节输入流的超类,一般使用它的子类:FileInputStream等,它能输出字节流; InputStreamReader : 是字节流与字符流之间的桥梁,能将字节流输出为字符流...test = new Test_InputStream(); System.out.println(test.getStream(URL)); } } 通过URL连接获取了InputStream...---- InputStreamReader package 数据流; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader...in = new URL(url).openStream(); //将字节流转化成字符流,并指定字符集 InputStreamReader isr = new InputStreamReader(in...---- 总结 在读取网络数据流的时候,可以通过先用InputStream获取字节流、InputStreamReader将字节流转化成字符流、BufferedReader将字符流以缓存形式输出的方式来快速获取网络数据流
要一次读取多个字节时,经常用到InputStream.available()方法,这个方法可以在读写操作前先得知数据流里有多少个字节可以读取。...http://www.cnblogs.com/CandiceW/p/5486112.html 能否使用取决于实现了InputStream这个抽象类的具体子类中有没有实现available这个方法。...但是,网络编程的时候Socket中取到的InputStream,就没有实现这个方法,那么就不可以使用这种方式创建数组。
✅ 输入流(InputStream / Reader):数据 → 程序(比如读文件) ✅ 输出流(OutputStream / Writer):程序 → 数据(比如写文件) 二、字节流 vs 字符流...—— 二进制 vs 文本 Java 的 I/O 分两大派: 1....核心类: InputStream(输入) OutputStream(输出) 常见实现: FileInputStream / FileOutputStream:操作文件 ByteArrayInputStream...答: 字节流:以 byte 为单位,适合处理二进制数据(图片、视频),基类是 InputStream/OutputStream; 字符流:以 char 为单位,自动处理字符编码,适合处理文本,基类是...答: 配置文件读取:用 BufferedReader 读取 application.properties; 文件上传下载:Spring MVC 用 InputStream 接收上传文件,OutputStream