Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在特定位置开始读取文件?_Java_File_File Io_Io - Fatal编程技术网

Java 如何在特定位置开始读取文件?

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 (

首先,我有几个小时的Java经验,所以,如果这是一个有点简单的问题,很抱歉

现在,我想读取一个文件,但我不想从文件的开头开始,而是想跳过前1024个字节,然后开始读取。有办法吗?我意识到RandomAccessFile可能有用,但我不确定

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;
}