当前位置: 首页 > 知识库问答 >
问题:

通过文件处理在java中连接多行文本的最简单方法

陈瀚
2023-03-14

我尝试在给定的文本文件中连接两行文本,并将输出打印到控制台。我的代码非常复杂,有没有更简单的方法通过使用文件处理基本概念来实现这一点?

import java.io.*;


public class ConcatText{

    public static void main(String[] args){
    
        BufferedReader br = null;
        try{
            String currentLine;
            br = new BufferedReader(new FileReader("C:\\Users\\123\\Documents\\CS105\\FileHandling\\concat.file.text"));
            
            StringBuffer text1 = new StringBuffer (br.readLine());
            StringBuffer text2 = new StringBuffer(br.readLine()); 
            text1.append(text2);
            String str = text1.toString();
            str = str.trim();
            String array[] = str.split(" ");
            StringBuffer result = new StringBuffer();
            for(int i=0; i<array.length; i++) {
               result.append(array[i]);
              }
              System.out.println(result);
            }
        catch(IOException e){
            e.printStackTrace();
        }finally{
            try{
                if(br != null){
                    br.close();
                }
                }catch(IOException e){
                    e.printStackTrace();
                    
                }
            }   
                
        }
        
    
    
    }

The text file is as follows :
GTAGCTAGCTAGC
AGCCACGTA

the output should be as follows (concatenation of the text file Strings) :
GTAGCTAGCTAGCAGCCACGTA

共有2个答案

颜博达
2023-03-14

简而言之,有:

  public static void main(String[] args) {
    //this is called try-with-resources, it handles closing the resources for you
    try (BufferedReader reader = new BufferedReader(...)) {
      StringBuilder stringBuilder = new StringBuilder();
      String line = reader.readLine();
      //readLine() will return null when there are no more lines
      while (line != null) {
        //replace any spaces with empty string
        //first argument is regex matching any empty spaces, second is replacement
        line = line.replaceAll("\\s+", "");
        //append the current line
        stringBuilder.append(line);
        //read the next line, will be null when there are no more
        line = reader.readLine();
      }
      System.out.println(stringBuilder);
    } catch (IOException exc) {
      exc.printStackTrace();
    }
  }

首先,阅读并尝试使用资源,当您使用它时,您不需要手动关闭资源(文件、流等),它会为您做到这一点。举个例子。

您不需要在StringBuffer中包装读取行,在这种情况下,您不会从中得到任何东西。还可以从java文档开始阅读String类提供的方法。

马边浩
2023-03-14

如果您使用的是java 8或更新版本,最简单的方法是:

List<String> lines = Files.readAllLines(Paths.get(filePath));
String result = String.join("", lines);

如果您使用的是java 7,至少可以使用try with资源来减少代码中的混乱,如下所示:

try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
   StringBuffer text1 = new StringBuffer (br.readLine());
   StringBuffer text2 = new StringBuffer(br.readLine()); 
   // ...
}catch(IOException e){
   e.printStackTrace();
}

这样,资源将自动关闭,您无需调用br。close()。

 类似资料:
  • 问题内容: 这是我的问题。 与一堆.csv文件(或其他文件)。熊猫是读取它们并保存为格式的简便方法。但是当文件数量巨大时,我想通过多处理读取文件以节省一些时间。 我的早期尝试 我手动将文件分成不同的路径。分别使用: 然后合并它们。 如何运行它们以解决我的问题? 任何意见,将不胜感激! 问题答案: 使用:

  • 问题内容: 我正在使用Express 3,并且想处理 文本/纯 POST。 Express 3 现在使用connect的bodyParser(我认为旧的Express代码已转移到connect)。bodyParser的文档提供了有关如何使其支持其他文件类型的一些详细信息。而且我找到了一篇很棒的博客文章,内容涉及在旧版本的Express中如何处理文本/纯文本。 我是否应该明确要求连接(并让节点的要求

  • 本文向大家介绍python简单文本处理的方法,包括了python简单文本处理的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python简单文本处理的方法。分享给大家供大家参考。具体如下: 由于有多线程的影响,c++项目打印出来的时间顺序不一致,导致不太好在excel中统计,故使用python写了段脚本来解决之。涉及到如下方面 1. txt文本的读取,utf8的处理 2. 字符串的基

  • 问题内容: 对于我的School项目,我必须证明我可以在程序中利用文件处理功能。为此,我做了一个非常简单的登录过程,您可以在该过程中创建一个帐户,该帐户将用户名和密码写入位于资源文件夹中的文本文件。显然,这根本没有安全性,因为它并不是为了展示文件处理而设计的,但是我的老师说我也应该尝试对文件添加一些加密以取得更好的成绩。 我已经进行了一些研究,许多人都推荐使用DES。 我遇到的问题是我的项目没有太

  • 问题内容: 我在python中遇到以下问题。 我需要并行执行一些计算,这些计算的结果需要按顺序写入文件中。因此,我创建了一个函数,该函数接收和文件句柄,进行计算并将结果打印到文件中: 但是脚本运行后文件最终为空。我试图将worker()函数更改为: 并将文件名作为参数传递。然后它按我的预期工作。当我尝试按顺序执行相同的操作而不进行多处理时,它也可以正常工作。 为什么它在第一个版本中不起作用?我看不

  • 问题内容: 我想知道用Java编写文本文件最简单(最简单)的方法是什么。请保持简单,因为我是初学者:D 我在网上搜索并找到了此代码,但我了解其中的50%。 } 问题答案: 在Java 7及更高版本中,一个使用Files的衬板: