java读取文本中从指定位置开始指定长度的字符的疑问,请帮忙解决!

比如啊a.txt中为:123456789我想读3456,下面的方法怎么不行啊???publicstaticvoidread1(){RandomAccessFiler=nu... 比如啊a.txt中为:123456789 我想读3456,下面的方法怎么不行啊???public static void read1() {
RandomAccessFile r = null;
try {
r = new RandomAccessFile(new File("D:/a.txt"),"r");
byte[] c = new byte[4];
r.read(c, 2, 4);
System.out.println(new String(c));
} catch (Exception e) {
try {
r.close();
} catch (IOException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}

}
展开
 我来答
匿名用户
2013-07-19
展开全部
貌似只有RandomAccessFile类可以随机读写,至少我没有听过还有其它的I/O类可以实现此功能!至于你的byte[] c = new byte[4];//这里c数组里存放的是文件开头的4个字节,即1234!
r.read(c, 2, 4);//通俗点说这里的2表示的是放弃文件前2个字节的读取,改为读取的空格(即使文件中没有空格),再从文件开头(即1)开始向后读取4个字节(如果你的数组长度够长,至少设为6[ = 2(个空格)+ 4(个字符长度))],你可以读取到文件中的前4个字节,即1234!最后帮你解决下问题:在r = new RandomAccessFile(new File("D:/a.txt"),"r");与System.out.println(new String(c));之间改为r.seek(2);
byte[] c = new byte[4];
r.read(c);就可以随机读取到3456了!
匿名用户
2013-07-19
展开全部
read(byte[] b, int off, int len)ameters: b the buffer into which the data is read. off the start offset in array b at which the data is written. len the maximum number of bytes read. 你用r.read(c, 2, 4); 是这样的,从c数组的第二个位置起(前两个忽略成空格),读入4个字符到数组c中。 你的数组长度是4,而需要的长度是2+4个长度,报超界是必然的。 错误的理解,错误的用法。 希望你再试试其他方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
辛升始影
2019-10-22 · TA获得超过3524个赞
知道大有可为答主
回答量:3187
采纳率:24%
帮助的人:463万
展开全部
read
读取的只是字节数,你用read(c,2,4)只是代表的是你要读入4
个字节,并不是,从3到6这四个数,你可以将所有的数,以字符串先读进来,然后转换成字节数组,或者不转换,通过下标去打印出来就好了,当然还有别的做法,我只是给你说一下read()只是读的字节数,你可以查下API
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-19
展开全部
IO流几十个类~~~这个不行换个嘛~~~比如FileInputStream这个类~~~它也用字符数组来接受额~~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式