Java 如何在特定位置开始读取文件?
首先,我有几个小时的Java经验,所以,如果这是一个有点简单的问题,很抱歉 现在,我想读取一个文件,但我不想从文件的开头开始,而是想跳过前1024个字节,然后开始读取。有办法吗?我意识到RandomAccessFile可能有用,但我不确定Java 如何在特定位置开始读取文件?,java,file,file-io,io,Java,File,File Io,Io,首先,我有几个小时的Java经验,所以,如果这是一个有点简单的问题,很抱歉 现在,我想读取一个文件,但我不想从文件的开头开始,而是想跳过前1024个字节,然后开始读取。有办法吗?我意识到RandomAccessFile可能有用,但我不确定 try { FileInputStream inputStream=new FileInputStream(fName); // skip 1024 bytes somehow and start reading . } catch (
try {
FileInputStream inputStream=new FileInputStream(fName);
// skip 1024 bytes somehow and start reading .
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
您需要使用该方法查找到您想要的点,然后从该点开始阅读。javadocs中有关于
FileInputStream
的更多信息,您可能会对此感兴趣。您可以在此处使用类似skipBytes()的方法
你可以只读取1024个字节,然后做你的事情。@SotiriosDelimanolis是的,这是一种处理的方式,但这不是一种无用的方式吗?@SotiriosDelimanolis顺便说一句,1024个字节后,有时我需要跳过文件的一部分,所以如果我学会这样做会更好:如果它是二进制文件:;如果是文本文件:@dcolish顺便说一句,我的文件是二进制文件。这会导致任何问题吗?@TheGost:一点也不:“用于读取原始字节流,如图像数据。”
/**
* Read count bytes from the InputStream to "/dev/null".
* Return true if count bytes read, false otherwise.
*
* @param is
* The InputStream to read.
* @param count
* The count of bytes to drop.
*/
private static boolean skipBytes(
java.io.InputStream is, int count) {
byte[] buff = new byte[count];
/*
* offset could be used in "is.read" as the second arg
*/
try {
int r = is.read(buff, 0, count);
return r == count;
} catch (IOException e) {
e.printStackTrace();
}
return false;
}