- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我是 Java 编程的新手,我无法在任何地方找到我的问题的答案。
如何读取文件的几行并将其存储在 String
(或字符串列表)中。
例如,从一个 1000 行的文件中,我只需要读取从第 200 行到第 400 行的 200 行。
我遇到了 FileInputStream
使用它我们可以定义起始位置但我们不能定义结束位置。
最佳答案
您不能直接这样做。您只能通过阅读并忽略您不关心的第一行来做到这一点。
您可以使用 Java 的 LineNumberReader
来做到这一点.用它来读取文件,一次读取一行。继续阅读并忽略行,直到到达第 200 行,开始处理数据,一旦到达 400 就停止。
注意:在你问之前,不,LineNumberReader#setLineNumber
不改变文件位置,它只是人为设置报告的行号:
By default, line numbering begins at 0. This number increments at every line terminator as the data is read, and can be changed with a call to
setLineNumber(int)
. Note however, thatsetLineNumber(int)
does not actually change the current position in the stream; it only changes the value that will be returned bygetLineNumber()
.
另一种选择是只使用 BufferedReader
,调用 readLine()
199 次以跳到第 200 行,然后读取接下来的 200(或其他)行。但是,LineNumberReader
只是方便地为您跟踪行号。
从 Java 8 开始,第三种选择是使用 streams API并做类似的事情:
Files.lines(Paths.get("input.txt"))
.skip(200) // skip to line 200
.limit(200) // discard all but the 200 lines following this
.forEach(...)
通过您的处理Consumer
到 forEach()
。
无论哪种方式,相同的概念:您必须读取并丢弃文件的前 N 行,您无法绕过这一点。
LineNumberReader
示例:
LineNumberReader reader = new LineNumberReader(new FileReader("input.txt"));
for (String line = reader.readLine(); line != null; line = reader.readLine()) {
if (reader.getLineNumber() > 400) {
break; // we're done
} else if (reader.getLineNumber() >= 200) {
// do something with 'line'
}
}
BufferedReader
的例子,不像上面的那么简单:
BufferedReader reader = new BufferedReader(new FileReader("input.txt"));
// skip to the 200th line
for (int n = 0; n < 199 && reader.readLine() != null; ++ n)
;
// process the next 201 (there's 201 lines between 200 and 400, inclusive)
String line;
for (int n = 0; n < 201 && (line = reader.readLine()) != null; ++ n) {
// do something with 'line'
}
上面已经给出了使用 Files
的示例。
你想如何在你的 for
或 while
或任何循环中组织 EOF 等的条件和测试更多是个人品味的问题,这些只是任意的示例。
关于java - 使用给定起始行号和结束行号的 Java 读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39183869/
我在尝试生成具有“价格”轴和“量”轴的图表时遇到问题,类似于 example given 中的图表。在 Highstock 网站上。它可以很好地显示成交量轴,但不能显示价格。 在尝试确定问题的原因时,
起始 - HTML
在我的 HTML 项目中,我试图提及 标签。但是,VS Code 将其解释为实际的 标签,它会导致奇怪的事情发生。有人有办法解决这个问题吗?预先感谢您! 最佳答案 使用<代替 . 顺便说一下,使
起始 - HTML
在我的 HTML 项目中,我试图提及 标签。但是,VS Code 将其解释为实际的 标签,它会导致奇怪的事情发生。有人有办法解决这个问题吗?预先感谢您! 最佳答案 使用<代替 . 顺便说一下,使
The allocation function attempts to allocate the requested amount of storage. If it is successful, i
这是我的Program.cs: public static void Main(string[] args) { var host = new WebHostBuilder()
我希望我的应用程序独立于操作系统。因此,我的 config.properties 和日志文件存储在资源文件夹中,我通过相对路径获取这些资源。这是我的项目结构。 这是我的 AppConfig 类: pu
(前言:这是我在 Stack Overflow 上提出的第一个与音频相关的问题,因此我会尽力用最好的措辞来表达。欢迎编辑。) 我正在创建一个允许用户循环播放音乐的应用程序。目前,我们的原型(proto
我有一个 Pandas DataFrame,我想将其用作 Scrapy Start URL,函数 get_links 打开一个到 DataFrame 的 xlsx,其中有一个我想在其上运行蜘蛛的 Co
我有几个大的 DTD 文件。我用过 trang将它们转换为 XSD 文件,这样我就可以轻松地从 JAXB 和其他实用程序中使用它。但是,生成的 XSD 文件的所有声明元素都位于顶层。这意味着任何元素都
是否有任何工具可以将文件从给定的起始偏移量复制到给定的(结束)偏移量。我还想通过运行 md5sum 确认该工具已正确复制指定的字节。像这样的东西 1) Copy source file star
所以,我有一个程序,我可以使用 Path2D 对象将形状添加到 JPanel,然后我可以单击并拖动它们。我想要做的是能够找到药物后形状的最终 X 和 Y 坐标。坐标必须是左上角坐标。有什么想法吗? /
我是一名优秀的程序员,十分优秀!