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();
}
} 展开
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();
}
} 展开
4个回答
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了!
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个长度,报超界是必然的。 错误的理解,错误的用法。 希望你再试试其他方法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
read
读取的只是字节数,你用read(c,2,4)只是代表的是你要读入4
个字节,并不是,从3到6这四个数,你可以将所有的数,以字符串先读进来,然后转换成字节数组,或者不转换,通过下标去打印出来就好了,当然还有别的做法,我只是给你说一下read()只是读的字节数,你可以查下API
读取的只是字节数,你用read(c,2,4)只是代表的是你要读入4
个字节,并不是,从3到6这四个数,你可以将所有的数,以字符串先读进来,然后转换成字节数组,或者不转换,通过下标去打印出来就好了,当然还有别的做法,我只是给你说一下read()只是读的字节数,你可以查下API
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-19
展开全部
IO流几十个类~~~这个不行换个嘛~~~比如FileInputStream这个类~~~它也用字符数组来接受额~~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询