在练习使用随机文件流类RandomAccessFile将一个文本文件倒置读出一个.txt文件时遇到两个问题,特此记录一下

1.读取utf-8编码格式的文件是,前三位会有特殊字符占用。

2.GBK编号一个中文字符占用2个字节,UTF-8编码一个中文字符占用3个字节

//不同编码格式占用字节长度
System.out.println("中".getBytes("UTF-8").length); //3
System.out.println("中".getBytes("GBK").length); //2
System.out.println("中".getBytes("ISO-8859-1").length); //1
System.out.println("。".getBytes("UTF-8").length); //3System.out.println("a".getBytes("UTF-8").length); //1
System.out.println("a".getBytes("GBK").length); //1
System.out.println("a".getBytes("ISO-8859-1").length); //1
System.out.println(".".getBytes("UTF-8").length); //1

使用随机文件流类RandomAccessFile将一个文本文件倒置读出

package com.syb.io;import java.io.File;
import java.io.RandomAccessFile;/*** (十) 使用随机文件流类RandomAccessFile将一个文本文件倒置读出。*txt格式使用UTF-8类型保存文件,前三位会有特殊字符占用,需注意*UTF-8类型的中文字符占三个字节* @author Administrator**/
public class Lession10 {public static void main(String[] args) throws Exception {String path = "D:/helloword.txt";File file = new File(path);//定义随机文件流RandomAccessFile raf = new RandomAccessFile(file, "r");//"r"表示只读StringBuffer sb = new StringBuffer();long length = raf.length();while(length > 3){length--;//设置在那个位置发生下一个读取或写入操作raf.seek(length);int len1 = (char) raf.readByte();if(0 <= len1 && len1 <= 128){sb.append((char)len1 + "");}else{length--;raf.seek(--length);byte[] bytes = new byte[3];// bytes被复制为连续3个字节raf.readFully(bytes);sb.append(new String(bytes));}}System.out.println(sb.toString());raf.close();//不同编码格式占用字节长度System.out.println("中".getBytes("UTF-8").length); //3System.out.println("中".getBytes("GBK").length); //2System.out.println("中".getBytes("ISO-8859-1").length); //1System.out.println("。".getBytes("UTF-8").length); //3System.out.println("a".getBytes("UTF-8").length); //1System.out.println("a".getBytes("GBK").length); //1System.out.println("a".getBytes("ISO-8859-1").length); //1System.out.println(".".getBytes("UTF-8").length); //1}
}

使用随机文件流类RandomAccessFile将一个文本文件倒置读出相关推荐

  1. 使用随机文件流类RandomAccessFile将一个文本文件倒置读出。

    import java.io.*;    import java.util.*;   //使用随机文件流类RandomAccessFile将一个文本文件倒置读出. public class Home ...

  2. java流类图结构_java I/O 流总结

    一.java 流操作有关的类和接口: 类                                                                          说明 Fil ...

  3. 随机访问类(RandomAccessFile)

    随机访问类(RandomAccessFile) 随机访问类(RandomAccessFile) - [] 输入流FileInputStream和输出流 FileOutputStream,实现的是对磁盘 ...

  4. java 常用流_Java流类图结构: 流的概念和作用流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数...

    Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观 ...

  5. java流的写法_java IO-过滤流类的写法

    package test2; import java.io.FilterOutputStream; import java.io.IOException; import java.io.OutputS ...

  6. C++文件类(文件流类)及用法详解

    <C++输入输出流>一章中讲过,重定向后的 cin 和 cout 可分别用于读取文件中的数据和向文件中写入数据.除此之外,C++ 标准库中还专门提供了 3 个类用于实现文件操作,它们统称为 ...

  7. wxWidgets:stream流类概述

    wxWidgets:stream流类概述 wxWidgets:stream流类概述 stream流类 stream例子 wxWidgets:stream流类概述 wxWidgets 提供了它自己的一组 ...

  8. C++ i/o类库中 常用流类

    类名 作用 在哪个头文件中声明 ios 抽象基类 iostream ------------------------------------------------------------------ ...

  9. java流类图结构_java学习之IO流(学习之旅,一)

    个人在学习IO流的时候看到如下所示java 流类图结构的时候,我的感想是,这么多··处于蒙的状态. Java流类图结构 这么多,没有分类不好学,那我们就慢慢一口一口的吃,这样每天学习一点就好了,其实很 ...

最新文章

  1. 贝塞尔曲线动画demo(仿美人相机效果)
  2. 统计学习三要素 模型+策略+算法
  3. springMVC通过ajax传递参数list对象或传递数组对象到后台
  4. 关于getCurrentUrl的获取问题
  5. 如何在 Asp.Net Core 实现 Excel 导出功能
  6. Spring@Autowired注解
  7. 常见的HTTP错误码
  8. 覆盖的面积 HDU - 1255 (扫描线, 面积交)
  9. 测试过程中常用的linux命令之【删除指定的文件行】
  10. 4 拼接_3个孩子,64㎡小户型内“镶嵌”4室一厅,餐桌还能随意拼接
  11. Keras下使用多GPU训练模型
  12. 我接触到的几款SQLite管理工具
  13. 为什么密度泛函理论 (DFT) 会低估带隙?
  14. Linux基础(三)安装及管理程序
  15. 技嘉的UEFI修复windows与Ubuntu双系统引导+老毛桃修复引导失败+No EFI system partition was found.
  16. Windows下安装igraph
  17. ssm基于javaweb的医疗健康知识管理系统设计与实现毕业设计源码
  18. API系列(一):SMS API
  19. ​ ViewBag​
  20. Echarts中国地图各省份区域设置不同的颜色

热门文章

  1. html 设置图片显示比例,css巧妙设置等比例图片显示
  2. Python 利用免费HTTP代理IP网站多线程筛选出自己的代理IP池
  3. 把EXCEL表格导入到MYSQL中_将EXCEL表格中的数据导入mysql数据库表中(两种方法)...
  4. zxing扫描条形码 ios
  5. 开始做一个简单的记账工具
  6. 【半小时极速装机】 | 联想小新Pro13 AMD 4600U ubuntu装机 调节屏幕亮度+调整缩放+显示屏扩展教程
  7. 【算法讲20:Dsu on Tree】树上数颜色 | Lomsat gelral
  8. shell脚本--杀死进程
  9. Files and Directories
  10. java如何获取复选框选中的值