字符流

JavaIO/输出输入入门<一>

梦想的初衷 提交于 2019-11-29 01:00:04
IO称之为输入输出,Java的IO是通过java.io包下的类和接口来支持,包含两大类:输入,输出. 在整个Java.io包中最重要的就是5个类和一个接口 。5个类指的是File、OutputStream、InputStream、Writer、Reader;一个接口指的是Serializable. 掌握了这些IO的核心操作那么对于Java中的IO体系也就有了一个初步的认识了。 1.File类 File类是java.io下代表与平台无关的文件和目录.也就是说如果要操作文件和目录,都可以通过File来操作.File不能访问访问文件本身,如果需要访问文件本身,需要使用输入/输出流. File 类有一个欺骗性的名字——通常会认为它对付的是一个文件,但实情并非如此。 它既代表一个特定文件 的名字,也代表目录内一系列文件的名字。 若代表一个文件集,便可用list()方法查询这个集,返回的是一 个字串数组。之所以要返回一个数组,而非某个灵活的集合类,是因为元素的数量是固定的。而且若想得到 一个不同的目录列表,只需创建一个不同的File 对象即可。 事实上,“FilePath ”(文件路径)似乎是一个 更好的名字。 ----摘自 think in java 代码示例File的使用: package org.credo.io; import java.io.File; import java.io

文本在内存中的编码(2)——乱码探源(5)

流过昼夜 提交于 2019-11-28 14:39:23
在前面我们探讨了String是什么的问题,现在来看String从哪来的问题。 String从哪里来? 所谓从哪里来也可以看作是String的构造问题,因此我们会从String的构造函数说起。 String的构造函数 在前面我们知道String的内部就是char[],因此它可以根据一组char[]来构建,String中有这样的构造函数: public String(char value[]) {} 那么char[]又从何而来呢?char的底层是byte,String从根本上讲还是字节序列,而一个文本文件从根本上讲它也是字节序列,那是不是直接把一个文本文件按字节读取上来就成了一个String呢? 答案是否定的。因为我们知道String不但是byte[],而且它是一个有特定编码的byte[],具体为UTF-16。 而一个文本文件的字节序列有它自己特定的编码,当然它也可能是UTF-16,但更可能是如UTF-8或者是GBK之类的,所以通常要涉及编码间的一个转换过程。我们来看下通过字节序列来构造String的几种方式: public String(byte bytes[]) {} public String(byte bytes[], String charsetName) throws UnsupportedEncodingException {} public String(byte