【问题标题】:How to split JTextArea to ranges of lines and save them to separate fiels?如何将 JTextArea 拆分为行范围并将它们保存到单独的字段中?
【发布时间】:2016-01-27 23:28:03
【问题描述】:

我的简单程序从键盘或文本字段获取输入并将其放入 JTextArea,如下所示:

1111,1111;\n
2222,2222;\n
3333,3333;\n
.
.
.
\n

当我完成输入数据时,我想将其保存到 txt 文件中,但是有一个条件 - 当有超过 30 行时,来自 jtextarea 的数据必须拆分成更小的“包”(每个人都必须有只有 30 行(或最后一行),它们必须保存到单独的 txt 文件中。每个文件的末尾必须有空行 (\n)。

我知道如何创建文件。

我可以算出我必须从 jtextarea 中拆分数据的数量。

但我不知道如何在第一次运行时通过扫描仪读取 1-30 行并将其保存到文件,在第二次运行时读取 31-60 并保存等。

String string = jtextarea.getText() gets all the lines

我也尝试过这样的事情:

for (int i=1; i<31; i++)
{
    while(scaner.hasNext())
    pw.println(scaner.nextLine());
}

但它也会读取所有行

这也不起作用 - 只给出 30 个字符 - 不是行:

String alltext = jtextare.getText();
String lines = alltext.substring(0, 30);

这个例子我看不懂:

String text = inputArea.getText();
int totalLines = inputArea.getLineCount();
for (int i=0; i < totalLines; i++) {
    int start = inputArea.getLineStartOffset(i);
    int end = inputArea.getLineEndOffset(i);
    String line = text.substring(start, end);

    outputArea.append(line + "\n");
} 

当我不能指出行号时,为什么还要麻烦,只能在行中定位。

请帮我解决这个问题 - 你能描述一下正确的循环和命令吗?

问题的简单描述

我有 100 行文本的 jTextArea。每行以 \n 结尾。

我想将这 100 行拆分为每组 30 行的组,并将每个组写入 txt 文件 - 每个 txt 文件将包含 30 行文本(每行以 \n 结尾)和最后 (31) 行应该是空的。 最简单的方法是什么?

【问题讨论】:

  • 30 行还是 30 个字符?
  • 每个文件我需要 30 行 (+\n)
  • 给出一个样本输入,以及你想要的预期输出。你写的不清楚。
  • @Hackerdarshi - 我添加了更简单的截图问题描述

标签: java swing jtextarea


【解决方案1】:

这行得通:

try
{
    Scanner sc = new Scanner(ta.getText());
    String s="";
    for(int i=1; i<=100; i++)
    {
        s+=sc.nextLine()+"\r\n";
        if(i%30==0)
        {
            File f = new File("File"+(i/30)+".txt");
            f.createNewFile();
            BufferedWriter bw = new BufferedWriter(new FileWriter(f));
            bw.write(s);
            bw.close();
            s="";
        }
    }
    File f = new File("File4.txt");
    f.createNewFile();
    BufferedWriter bw = new BufferedWriter(new FileWriter(f));
    bw.write(s);
    bw.close();
}catch(Exception e){}

【讨论】:

  • 这正是它所需要的!您的解决方案很好,简单且干净。非常感谢你的知识。
  • @Mic 请accept the answer 表示已解决。这样做还可以获得 2 点声望。
猜你喜欢
  • 1970-01-01
  • 2020-12-16
  • 2014-01-14
  • 1970-01-01
  • 1970-01-01
  • 2013-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多