JAVA文件倒序输出

importjava.io.*;publicclasstest4{/***@paramargs*/publicstaticvoidmain(String[]args){t... import java.io.*;
public class test4 {

/**
* @param args
*/
public static void main(String[] args){
try {
FileInputStream x1=new FileInputStream("c:/1.txt");
FileOutputStream x2=new FileOutputStream("c:/2.txt");
int c=x1.available();
System.out.println(c);
byte[] d=new byte[1];
while(c>0){
System.out.println(c);
x1.read(d,c-1, 1);
x2.write(d);
c--;
}

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();

}

}

Exception in thread "main" java.lang.IndexOutOfBoundsException
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(Unknown Source)
at test4.main(test4.java:16)

为什么会超出下标?
展开
 我来答
tomiscat2009
2009-05-07 · TA获得超过2434个赞
知道小有建树答主
回答量:380
采纳率:0%
帮助的人:538万
展开全部
看清楚了,public int read(byte[] b, int off, int len)方法的三个参数:
b - 存储读取数据的缓冲区。
off - 目标数组 b 中的起始偏移量。//你从b[c-1]开始读当然IndexOutOfBounds了!!
len - 读取的最大字节数。
liuhua712
2009-05-08
知道答主
回答量:11
采纳率:0%
帮助的人:1.3万
展开全部
byte[] d=new byte[1];
你给的长度、
你看看这里读了几个长度啊?
假设c=5,5个字节
x1.read(d,c-1, 1); c-1的话就是4了啊。所以报错撒、、

好像把1文件内容,反着写到2文件 这个方法不行。具体怎么做我也不知道
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
duff33
2009-05-08 · TA获得超过358个赞
知道小有建树答主
回答量:108
采纳率:0%
帮助的人:0
展开全部
kjkj
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Narvik小红帽
2009-05-07 · TA获得超过649个赞
知道小有建树答主
回答量:549
采纳率:0%
帮助的人:550万
展开全部
你去查下API文档
你的read方法用错了

另外,楼上的说法是错的,因为read方法读的就是一个byte,和字符问题没关系。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式