Java从文件指定位置开始读取文件流
文件任意位置读取
一般有两种方法:
1、使用FileInputStream类 , skip指定位置
2、使用RandomAccessFile类,seek指定位置
此处先说一下第一种方法,直接看测试代码:
public static void read(){
long from = 4+1;//从该字节开始读,自己测注意中文是两个字节
try{
File file = new File("d:\\文件上传\\ss.txt");
FileInputStream bis=new FileInputStream(file);
bis.skip(from-1);//文件指向前一字节
@SuppressWarnings("resource")
//指定文件位置读取的文件流
InputStream sbs = new BufferedInputStream(bis);
//存入文件,以便检测
File file1=new File("d:\\文件上传\\ss1.txt");
OutputStream os=null;
try
{
os=new FileOutputStream(file1);
byte buffer[]=new byte[4*1024];
int len = 0;
while((len = sbs.read(buffer)) != -1)//
{
os.write(buffer,0,len);
}
os.flush();
}catch(Exception e){
e.printStackTrace();
}finally{
try {
os.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}finally{
}
}
主要代码:
long from = 4+1;//从该字节开始读,自己测注意中文是两个字节
File file = new File("d:\\文件上传\\ss.txt");
FileInputStream bis=new FileInputStream(file);
bis.skip(from-1);//文件指向前一字节
@SuppressWarnings("resource")
//指定文件位置读取的文件流
InputStream sbs = new BufferedInputStream(bis); //得到指定位置的流
也可以获得指定长度的文件
第二种方法后续上传