Tag: 偏移量

如何知道java中文本文件中一行开头的偏移量?

我想知道文本文件中存在的每一行的偏移量。 现在我试过了, path=FileSystems.getDefault().getPath(“.”,filename); br=Files.newBufferedReader(path_doc_title_index_path, Charset.defaultCharset()); int offset=0; //offset of first line. String strline=br.readline(); offset+=strline.length()+1; //offset of second line 通过这种方式,我可以遍历整个文件,以了解整个文本文件中行开头的偏移量。 但是如果我使用RandomAccessFile来搜索文件并使用上面方法计算的偏移来访问一行,那么我发现自己处于某个行的中间。 这似乎是偏移不正确。 怎么了? 这种方法计算偏移是不正确的吗? 有什么更好更快的方法吗?

ASM通过代码查找偏移量

我想在我使用的测试用例中找到不同方法的偏移量。 我可以找到方法开始和结束的位置,我查找操作码RETURN和ARETURN(我在方法visitInsn()中扩展一个methodVisitor的类中这样做),但是我无法找到那些在那里发生的偏移量字节码。 有任何想法吗? 为了以防万一:我正在使用ASM的核心API,我知道树API可以帮助我找到我需要的东西,但树API使一切都变得缓慢并使用内存,我买不起任何这些,所以我使用核心API

如何使用Java从Hadoop读取偏移量的文件

问题:我想从HDFS读取文件的一部分并将其返回,例如1000行的文件中的行101-120。 我不想使用seek因为我读过它很贵。 我有日志文件,我正在使用PIG处理成有意义的数据集。 我一直在编写一个API来返回数据以供前端消费和显示。 那些经过处理的数据集可以足够大,我不想在一个啜食中读出Hadoop中的整个文件,以节省线路时间和带宽。 (比方说5 – 10MB) 目前我正在使用BufferedReader返回工作正常的小摘要文件 ArrayList lines = new ArrayList(); … for (FileStatus item: items) { // ignoring files like _SUCCESS if(item.getPath().getName().startsWith(“_”)) { continue; } in = fs.open(item.getPath()); BufferedReader br = new BufferedReader(new InputStreamReader(in)); String line; line = br.readLine(); while (line != null) { line = line.replaceAll(“(\\r|\\n)”, “”); lines.add(line.split(“\t”)); line = […]