1)InputStream、OutPutStream是输出输入的基础流,均为抽象类,提供了read和writer方法,所有的子类均实现read和writer方法,read在遇到输入源的结尾时返回-1。

2)Reader、Writer专门为Unicode文本设计的输入输出基础流,同样是抽象类亦提供了read和writer方法,read遇到文件结尾时返回-1。

3)流对象使用完记得及时调用close关闭流,释放资源,InputStream、OutPutStream、Reader、Writer实现的接口如下图所示:

4)运行平台的不同,导致文件的分隔符有可能不尽相同,Java提供了获取平台的文件分隔符,可以通过java.io.File.separator获取平台的文件分隔符。

5)字符集

由于JDK版本的变化,同一个字符集可能有多个别名,可以通过如下代码获取字符集的所有别名:

        Charset csetCharset = Charset.forName("euc-cn");
Set<String> aliaseSet = csetCharset.aliases();
for (String alia : aliaseSet) {
System.out.println(alia);
}

通过如下代码获取程序支持的字符集:

        SortedMap<String, Charset> charsetSortedMap = Charset.availableCharsets();
for (String name : charsetSortedMap.keySet()) {
System.out.println(name);
}

 6)字符编码

由于本地编码并不能表示所有的Unicode字符,所以如果某个字符不能表示将被转换为?,同样解码时无法识别的输入将会被转化成Unicode的“替代字符”(‘\uFFFD’)。

字符串编码解码代码如下:

     // 字符串编码
String str="字符串编码解码";
Charset charset=Charset.forName("GBK");
ByteBuffer buffer= charset.encode(str);
byte[]bytes=buffer.array(); // 字符串解码
ByteBuffer buffer2=ByteBuffer.wrap(bytes,0,bytes.length);
CharBuffer charBuffer=charset.decode(buffer2);
String result=charBuffer.toString();
// 建议调用trim(),防止由于编码的问题导致解码后出现多余的空心方格
System.out.println(result.trim());

I/O流、字符集的更多相关文章

  1. 笔记:I/O流-字符集

    Java 库的 java.nio 包用 Charset 类统一了对字符集的转换,支付姐建立了两个字节Unicode码元序列与使用本地字符编码方式的字节序列之间的映射,Charset类使用的时由IANA ...

  2. JavaSE复习(四)File类与IO流

    File类 构造方法 public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例. public File(String parent ...

  3. #Java学习之路——基础阶段二(第八篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  4. 【Java】IO

    文章目录 IO 说明 流的分类 关于相对路径 节点流 FileRead 对read()操作升级:使用read的重载方法 总结 FileWriter 复制操作 总结 FileInput(Output)S ...

  5. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_08 转换流_1_字符编码和字符集

     

  6. java 字节流与字符流的区别

    字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作 ...

  7. java中IO流小解

    下面这张图列出了java中一些处理流: java中根据操作对象的不同可以分为:字节流和字符流. 首先我们先表示一下什么叫节点流和处理流: 节点流:可以从或向一个特定的地方(节点)读写数据.如FileR ...

  8. JAVA之IO流(字符流)

    字符流InputStreamReader和OutputStreamWriter是Writer和Read的子类:是字节流通向字符流的桥梁,也就是可以把字节流转化为字符流. InputStreamRead ...

  9. Java关于IO流的介绍

    JDK提供的流继承了四大类:InputStream(字节输入流).OutputStream(字节输出流).Reader(字符输入流).Writer(字符输出流). 字符流和字节流的主要区别:     ...

随机推荐

  1. C++字符分割

    AfxExtractSubString 表头: <afxwin.h> BOOL AFXAPI AfxExtractSubString ( CString& rString, LPC ...

  2. python ftp download with progressbar

    i am a new one to learn Python. Try to download by FTP. search basic code from baidu. no one tells h ...

  3. GridView中的更新按钮不能触发RowUpdating事件

    当点击“编辑”按钮以后,可以看到“更新”和“取消”按钮,“取消”按钮可以正常触发RowCancelingEdit事件,但是“更新”按钮不能触发RowUpdating事件. 解决方案: 在<asp ...

  4. March 5 2017 Week 10 Sunday

    If you do what you love, you will never work a day in your life. 做你所爱的事情,你就不会觉得是在工作. Today, one mach ...

  5. 第二次团队Scrum

    长大一条龙之登录注册 一.设计详情 本次冲刺我们团队实现了长大一条龙的登录注册功能,我们的这个项目严格遵守MVC架构,采用前后端分离的策略.我们将登录注册分为二层,DAO层:负责与数据进行交互,读写数 ...

  6. RF脚本中的坑2: pip下载python库时报certificate verify failed

    用pip命令下载第三方library时,报错certificate verify failed,截图如下: 在网上找了各种教程,包括修改了pip下载源地址也无效果,最后祭出了杀手锏——FQ,FQ成功后 ...

  7. 每天一个linux命令(22):tar命令

    通过SSH访问服务器,难免会要用到压缩,解压缩,打包,解包等,这时候tar命令就是是必不可少的一个功能强大的工具.linux中最流行的tar是麻雀虽小,五脏俱全,功能强大. tar命令可以为linux ...

  8. 生理周期,POJ(1006)

    题目链接:http://poj.org/problem?id=1006 解题报告: 1.枚举天数的时候可以根据前面的结果直接跳过一些错误的答案. ///三个周期是23,28,33, #include ...

  9. POJ 1984 Navigation Nightmare 【经典带权并查集】

    任意门:http://poj.org/problem?id=1984 Navigation Nightmare Time Limit: 2000MS   Memory Limit: 30000K To ...

  10. idea 一次性自动导包

    当复制粘贴一段纯文本代码时,许多类需要导包. 如图 使用optimize imports了,发还是没有办法导入未导入的包,只能删除未使用导包,这跟eclipse不一样,让人很不习惯,查了好多资料都没有 ...