用java怎么从指定文件中的指定位置开始读取指定长度的内容?谢谢

mauricehawk 2009-02-24 01:58:18
用java怎么从指定文件中的指定位置开始读取指定长度的内容?谢谢
...全文
6567 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
myg_315 2011-10-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mt502 的回复:]

RandomAccessFile的public int read(byte[] b,int off,int len) throws IOException也挺方便的
[/Quote]

注意二楼的方法是错误的,已经验证了。(原因:不管始FileInputStream还是RandomAccessFile中方法:read(byte[],int off, int len)中,off都是指在byte中的偏移(即开始位置),并不是指从制定位置开始。可以参考java的api文档。)
一楼和6楼的是正确的。
Sebastian_chen 2009-02-28
  • 打赏
  • 举报
回复
RandomAccessFile

下面的seek(int position)
代码热心人已经贴了,我就不贴了。
Mr_Su 2009-02-24
  • 打赏
  • 举报
回复
RandomAccessFile对于楼主的情况来说绝对好用!!

byte[] b = new byte[int length];
fis.read(b);

不过注意read一次,游标就会移动,如果读到你想要的东西要修改或者在该处写入 就要提前定义getFilePointer() ,再用seek()回到该游标位置
ZiSheng 2009-02-24
  • 打赏
  • 举报
回复

public class Test {

public static void main(String[] args) {
System.out.println(read(3,9));
}
public static String read(int from ,int to){
String result="";
byte[] result2=new byte[to-from+1];
try{
FileInputStream fis=new FileInputStream("d:\\ss.txt");
BufferedInputStream bis=new BufferedInputStream(fis);
bis.skip(from-1);
bis.read(result2, 0, to-from+1);
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
return new String(result2);
}
}

second
小强提包包 2009-02-24
  • 打赏
  • 举报
回复
在标准的J2SE中,实现LZ的需求,支持使用RandomAccessFile类

RandomAccessFile r = new RandomAccessFile(new File("c:/1.txt", "r"));//只读方式打开文件
r.seek(100);//指定下一次的开始位置
byte[] bs = new byte[1024];
r.read(bs);
r.readChar();
r.readInt();//读取一个整数
ZiSheng 2009-02-24
  • 打赏
  • 举报
回复

public class Test {

public static void main(String[] args) {
System.out.println(read(3,9));
}
public static String read(int from ,int to){
String result="";
try{
FileInputStream fis=new FileInputStream("d:\\ss.txt");
BufferedInputStream bis=new BufferedInputStream(fis);
bis.skip(from-1);
int c=0;
for(int i=0;(i<to-from)&&(c=bis.read())!=-1;i++){
result+=(char)c;
}
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
return result;
}
}
爱摸鱼de老邪 2009-02-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 MT502 的回复:]
RandomAccessFile的public int read(byte[] b,int off,int len) throws IOException也挺方便的
[/Quote]
这个不错
楼上的楼上也行
MT502 2009-02-24
  • 打赏
  • 举报
回复
RandomAccessFile的public int read(byte[] b,int off,int len) throws IOException也挺方便的
bluesmile979 2009-02-24
  • 打赏
  • 举报
回复
FileInputStream fis = FileInputStream(File file);指定文件

fis.skip(long n);指定位置

byte[] bs = new byte[int length]; 指定长度
fis.read(bs); 得到内容

62,633

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧