{"id":59767,"date":"2020-08-23T14:38:27","date_gmt":"2020-08-23T14:38:27","guid":{"rendered":"https:\/\/www.baeldung.com\/?p=86073"},"modified":"2020-08-23T14:38:27","modified_gmt":"2020-08-23T14:38:27","slug":"reading-a-line-at-a-given-line-number-from-a-file-in-java","status":"publish","type":"post","link":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/2020\/08\/23\/reading-a-line-at-a-given-line-number-from-a-file-in-java\/","title":{"rendered":"Reading a Line at a Given Line Number From a File in Java"},"content":{"rendered":"<p class=\"syndicated-attribution\"><meta name= \\\"keywords \\\" content= \\\"\u96fb\u5b50\u8a08\u7b97\u6a5f, \u6559\u80b2, IT \u96fb\u8166\u73ed,\u96fb\u8166\u88dc\u7fd2\uff0c \u96fb\u8166\u73ed\uff0c \u5bb6\u6559\uff0c \u79c1\u4eba\u8001\u5e2b\uff0c \u8cc7\u8a0a\u6280\u8853\uff0c \u7a0b\u5e8f\u8a2d\u8a08\uff0c \u96fb\u5b50\u8a08\u7b97\u6a5f\uff0c \u904a\u6232\uff0c \u860b\u679c\uff0c \u96fb\u5f71\uff0c \u8a08\u7b97\u6a5f\uff0c\u7de8\u78bc\uff0c Java\uff0c C\/C++\uff0c JavaScript\uff0c PHP\uff0c HTML\uff0c CSS\uff0c MySQL\uff0c mobile\uff0c Android\uff0c \u52d5\u6f2b\uff0c Python\uff0c teacher\uff0c \u88dc\u7fd2\uff0c \u96fb\u8166\u88dc\u7fd2 \u8cc7\u8a0a, \u7535\u5b50\u8ba1\u7b97\u673a, IT ,Game, apple, movie, Computer,student,Java,\u6559\u80b2, ,\u5b66\u751f, \u5b66\u4e60, learn, \u6559\u5b66,  Android, apple,anime, animation, \u4fe1\u606f\u6280\u672f, \u7a0b\u5e8f\u8bbe\u8ba1, \u79fb\u52a8\u7535\u8bdd, \u8cc7\u8a0a\u79d1\u6280,Game, Jeu, Juego,Call Of Duty ,\u4f7f\u547d\u53ec\u559a , \u6e38\u620f, \u7535\u5b50\u6e38\u620f,, \u591a\u4eba\u7535\u5b50\u6e38\u620f, \u7f51\u7edc\u6e38\u620f\uff0conline\uff0conline game, \u624b\u673a\u6e38\u620f, mobile \\\"><\/p>\n<h2 data-id=\"overview\">1. Overview<\/h2>\n<div class=\"bd-anchor\" id=\"overview\"><\/div>\n<p>In this quick article, we&#8217;re going to look at different ways of reading a line at a given line number inside a file.<\/p>\n<h2 data-id=\"input-file\">2. Input File<\/h2>\n<div class=\"bd-anchor\" id=\"input-file\"><\/div>\n<p>Let&#8217;s start by creating a simple file named <em>inputLines.txt<\/em> that we&#8217;ll use in all of our examples:<\/p>\n<pre><code class=\"language-yaml\">Line 1\r\nLine 2\r\nLine 3\r\nLine 4\r\nLine 5<\/code><\/pre>\n<h2 data-id=\"using-bufferedreader\">3. Using <em>BufferedReader<\/em><\/h2>\n<div class=\"bd-anchor\" id=\"using-bufferedreader\"><\/div>\n<p>Let&#8217;s look at the well known <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/java-buffered-reader\"><em>BufferedReader<\/em><\/a> class and its advantage of not storing the entire file into memory.<\/p>\n<p><strong>We can read a file line by line and stop when we desire:<\/strong><\/p>\n<pre><code class=\"language-java\">@Test\r\npublic void givenFile_whenUsingBufferedReader_thenExtractedLineIsCorrect() {\r\n    try (BufferedReader br = Files.newBufferedReader(Paths.get(FILE_PATH))) {\r\n        for (int i = 0; i &lt; 3; i++) {\r\n            br.readLine();\r\n        }\r\n        String extractedLine = br.readLine();\r\n        assertEquals(\"Line 4\", extractedLine);\r\n    }\r\n}<\/code><\/pre>\n<h2 data-id=\"using-scanner\">4. Using <em>Scanner<\/em><\/h2>\n<div class=\"bd-anchor\" id=\"using-scanner\"><\/div>\n<p>Another similar approach we can take is using a <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/java-scanner\"><em>Scanner<\/em><\/a>:<\/p>\n<pre><code class=\"language-java\">@Test\r\npublic void givenFile_whenUsingScanner_thenExtractedLineIsCorrect() {\r\n    try (Scanner scanner = new Scanner(new File(FILE_PATH))) {\r\n        for (int i = 0; i &lt; 3; i++) {\r\n            scanner.nextLine();\r\n        }\r\n        String extractedLine = scanner.nextLine();\r\n        assertEquals(\"Line 4\", extractedLine);\r\n    }\r\n}<\/code><\/pre>\n<p><strong>Although on small files, the difference between <em>BufferedReader<\/em> and <em>Scanner\u00a0<\/em>might not be noticeable, on larger files, the <em>Scanner<\/em> will be slower since it also <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/bufferedreader-vs-console-vs-scanner-in-java#parsingstream\">does parsing<\/a> and has a smaller buffer size.<\/strong><\/p>\n<h2 data-id=\"using-the-file-api\">5. Using the File API<\/h2>\n<div class=\"bd-anchor\" id=\"using-the-file-api\"><\/div>\n<h3 data-id=\"1-small-files\">5.1. Small Files<\/h3>\n<div class=\"bd-anchor\" id=\"1-small-files\"><\/div>\n<p>We can use <em>Files.readAllLines() <\/em>from the <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/java-nio-2-file-api\">File API<\/a> to easily read the contents of a file into memory and extract the line we desire:<\/p>\n<pre><code class=\"language-java\">@Test\r\npublic void givenSmallFile_whenUsingFilesAPI_thenExtractedLineIsCorrect() {\r\n    String extractedLine = Files.readAllLines(Paths.get(FILE_PATH)).get(4);\r\n    assertEquals(\"Line 5\", extractedLine);\r\n}<\/code><\/pre>\n<h3 data-id=\"2-large-files\">5.2. Large Files<\/h3>\n<div class=\"bd-anchor\" id=\"2-large-files\"><\/div>\n<p><strong>If we need to work with large files, we should use the <em>lines<\/em> method, which returns a <em>Stream<\/em> so that we can read the file line by line:<\/strong><\/p>\n<pre><code class=\"language-java\">@Test\r\npublic void givenLargeFile_whenUsingFilesAPI_thenExtractedLineIsCorrect() {\r\n    try (Stream lines = Files.lines(Paths.get(FILE_PATH))) {\r\n        String extractedLine = lines.skip(4).findFirst().get();\r\n        assertEquals(\"Line 5\", extractedLine);\r\n    }\r\n}<\/code><\/pre>\n<h2 data-id=\"using-apache-commons-io\">6. Using Apache Commons IO<\/h2>\n<div class=\"bd-anchor\" id=\"using-apache-commons-io\"><\/div>\n<p>Another option is using the <em>FileUtils\u00a0<\/em>class of the <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/apache-commons-io\"><strong>commons-io<\/strong><\/a> package, which reads the whole file and returns the lines as a list of <em>String<\/em>s:<\/p>\n<pre><code class=\"language-java\">@Test\r\npublic void givenFile_whenUsingFileUtils_thenExtractedLineIsCorrect() {\r\n    ClassLoader classLoader = getClass().getClassLoader();\r\n    File file = new File(classLoader.getResource(\"linesInput.txt\").getFile());\r\n    List&lt;String&gt; lines = FileUtils.readLines(file, \"UTF-8\");\r\n    String extractedLine = lines.get(0);\r\n    assertEquals(\"Line 1\", extractedLine);\r\n}<\/code><\/pre>\n<p><strong>We can also use the <em>IOUtils<\/em> class to achieve the same result, except this time, the whole content is returned as a <em>String<\/em>, and we have to do the splitting ourselves:<\/strong><\/p>\n<pre><code class=\"language-java\">@Test\r\npublic void givenFile_whenUsingIOUtils_thenExtractedLineIsCorrect() {\r\n    String fileContent = IOUtils.toString(new FileInputStream(FILE_PATH), StandardCharsets.UTF_8);\r\n    String extractedLine = fileContent.split(System.lineSeparator())[0];\r\n    assertEquals(\"Line 1\", extractedLine);\r\n}<\/code><\/pre>\n<h2 data-id=\"conclusion-1\">7. Conclusion<\/h2>\n<div class=\"bd-anchor\" id=\"conclusion-1\"><\/div>\n<p>In this quick article, we&#8217;ve gone over the most common ways of reading a line at a given line number from a file.<\/p>\n<p>As usual, the examples are available <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/github.com\/eugenp\/tutorials\/tree\/master\/core-java-modules\/core-java-io-3\">over on GitHub<\/a>.<\/p>\n<p><Img align=\"left\" border=\"0\" height=\"1\" width=\"1\" alt=\"\" style=\"border:0;float:left;margin:0;padding:0;width:1px!important;height:1px!important;\" hspace=\"0\" src=\"https:\/\/feeds.feedblitz.com\/~\/i\/634241943\/0\/baeldung\"><\/p>\n<div style=\"clear:both;padding-top:0.2em;\"><a title=\"Like on Facebook\" href=\"https:\/\/feeds.feedblitz.com\/_\/28\/634241943\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/fblike20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Share on Google+\" href=\"https:\/\/feeds.feedblitz.com\/_\/30\/634241943\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/googleplus20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Pin it!\" href=\"https:\/\/feeds.feedblitz.com\/_\/29\/634241943\/baeldung,\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/pinterest20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Tweet This\" href=\"https:\/\/feeds.feedblitz.com\/_\/24\/634241943\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/twitter20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Subscribe by email\" href=\"https:\/\/feeds.feedblitz.com\/_\/19\/634241943\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/email20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Subscribe by RSS\" href=\"https:\/\/feeds.feedblitz.com\/_\/20\/634241943\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/rss20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a rel=\"NOFOLLOW\" title=\"View Comments\" href=\"https:\/\/www.baeldung.com\/java-read-line-at-number#respond\"><img decoding=\"async\" height=\"20\" style=\"border:0;margin:0;padding:0;\" src=\"https:\/\/assets.feedblitz.com\/i\/comments20.png\"><\/a>&#160;<a title=\"Follow Comments via RSS\" href=\"https:\/\/www.baeldung.com\/java-read-line-at-number\/feed\/\"><img decoding=\"async\" height=\"20\" style=\"border:0;margin:0;padding:0;\" src=\"https:\/\/assets.feedblitz.com\/i\/commentsrss20.png\"><\/a>&#160;<\/div>\n\n<p class=\"syndicated-attribution\"><figure class= \\\"wp-block-image alignnone \\\"><img src= \\\"http:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-content\/uploads\/2016\/05\/logo2-2.png\\\" alt=\\\"IT\u96fb\u8166\u88dc\u7fd2 java\u88dc\u7fd2 \u70ba\u5927\u5bb6\u914d\u5c0d\u96fb\u8166\u88dc\u7fd2,IT freelance, \u79c1\u4eba\u8001\u5e2b, PHP\u88dc\u7fd2,CSS\u88dc\u7fd2,XML,Java\u88dc\u7fd2,MySQL\u88dc\u7fd2,graphic design\u88dc\u7fd2,\u4e2d\u5c0f\u5b78ICT\u88dc\u7fd2,\u4e00\u5c0d\u4e00\u79c1\u4eba\u88dc\u7fd2\u548cFreelance\u81ea\u7531\u5de5\u4f5c\u914d\u5c0d\u3002\\\"\/><figcaption>\u7acb\u523b\u8a3b\u518a\u53ca\u5831\u540d\u96fb\u8166\u88dc\u7fd2\u8ab2\u7a0b\u5427!<\/figcaption><\/figure>\r\n<\/br>Find A Teacher Form:\r\n<\/br>https:\/\/docs.google.com\/forms\/d\/1vREBnX5n262umf4wU5U2pyTwvk9O-JrAgblA-wH9GFQ\/viewform?edit_requested=true#responses\r\n<\/br><\/br>Email:\r\n<\/br>public1989two@gmail.com<br><br><br><br><br><br><br>\r\n<a href=www.itsec.hk style=color:#FFFFFF;>www.itsec.hk<\/a><br>\r\n<a href=\\\"www.itsec.vip\\\" style=color:#FFFFFF;>www.itsec.vip<\/a><br>\r\n<a href=\\\"www.itseceu.uk\\\" style=color:#FFFFFF;>www.itseceu.uk<\/a><br><\/p>","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>Learn different ways of reading a line at a given line number inside a file<\/p>\n<div><a title=\"Like on Facebook\" href=\"https:\/\/feeds.feedblitz.com\/_\/28\/634241943\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/fblike20.png\"><\/a>&nbsp;<a title=\"Share on Google+\" href=\"https:\/\/feeds.feedblitz.com\/_\/30\/634241943\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/googleplus20.png\"><\/a>&nbsp;<a title=\"Pin it!\" href=\"https:\/\/feeds.feedblitz.com\/_\/29\/634241943\/baeldung,\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/pinterest20.png\"><\/a>&nbsp;<a title=\"Tweet This\" href=\"https:\/\/feeds.feedblitz.com\/_\/24\/634241943\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/twitter20.png\"><\/a>&nbsp;<a title=\"Subscribe by email\" href=\"https:\/\/feeds.feedblitz.com\/_\/19\/634241943\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/email20.png\"><\/a>&nbsp;<a title=\"Subscribe by RSS\" href=\"https:\/\/feeds.feedblitz.com\/_\/20\/634241943\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/rss20.png\"><\/a>&nbsp;<a rel=\"NOFOLLOW\" title=\"View Comments\" href=\"https:\/\/www.baeldung.com\/java-read-line-at-number#respond\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/comments20.png\"><\/a>&nbsp;<a title=\"Follow Comments via RSS\" href=\"https:\/\/www.baeldung.com\/java-read-line-at-number\/feed\/\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/commentsrss20.png\"><\/a>&nbsp;<\/div>\n<\/div>","protected":false},"author":758,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"slim_seo":{"title":"Reading a Line at a Given Line Number From a File in Java - ITTeacherITFreelance.hk","description":"Learn different ways of reading a line at a given line number inside a file &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"},"footnotes":""},"categories":[6],"tags":[4787],"_links":{"self":[{"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/59767"}],"collection":[{"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/users\/758"}],"replies":[{"embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/comments?post=59767"}],"version-history":[{"count":8,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/59767\/revisions"}],"predecessor-version":[{"id":64365,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/59767\/revisions\/64365"}],"wp:attachment":[{"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/media?parent=59767"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/categories?post=59767"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/tags?post=59767"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}