倒置读出文本文件JAVA实现

预备知识:ASCII码(包括其扩展在内共256个)在UNICODE编码上的位置为0~255.

ASCII码是单字节的,其他UNICODE编码如中文是双字节的。

文本文件的换行包括回车符(CR,13)和换行符(LF,10),因此每次换行也是双字节。括号内为对应ASCII字符与ASCII编码。

如:

HelloWorld
1

占13个字节。

预备倒置读出的文本文件english.txt:

The arrow missed the target.
They rejected the union demand.
Where does this road go to?

下面是用随机流实现文本倒置输出的方法,主要利用随机流特有的seek()方法定位在文件中的位置。

import java.io.*;
public class TxtReaderMain {
	public static void main(String[] args) {
		RandomAccessFile r;
		try {
			r = new RandomAccessFile("english.txt", "rw");
			r.seek(0);
			long p = r.length();
			p--;
			while (p >= 0) {
				r.seek(p);
				int c = r.readByte();
				if (c <= 255 && c >= 0)       //判断是否单字节ASCII码
					System.out.print((char) c);
				else {                         //假如是双字节UNICODE编码,比如中文
					p--;
					r.seek(p);
					byte[] bb = new byte[2];
					r.read(bb);
					System.out.println(new String(bb));
				}
				p--;
			}
		} catch (Exception e) {
		}
	}

}
结果:

?ot og daor siht seod erehW


.dnamed noinu eht detcejer yehT


.tegrat eht dessim worra ehT

当然,也可以直接直接用字符输入流得到相同结果:

import java.io.*;
public class ReadMain {
	public static void main(String[] args) {
		try{FileInputStream f=new FileInputStream("english.txt");
		byte[] bb=new byte[100];
		int n=f.read(bb);
		char[] c=new String(bb,0,n).toCharArray();
		//System.out.println(c);
		for(int i=c.length-1;i>=0;i--)
			System.out.print(c[i]);
		}catch(Exception e){
			
		}
	
	}
}


  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值