如何将JTextArea拆分为行范围并将它们保存为单独的fiels?

时间:2016-01-27 23:28:04

标签: java swing jtextarea

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

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

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

我知道如何创建文件。

我可以计算从jtextarea中分割数据的数量。

但我无法弄清楚如何在第一次运行中通过scaner读取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");
} 

为什么我不能指出行号,只能排在行列中。

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

问题的简单描述

我有jTextArea,有100行文字。每行以\ n。

结尾

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

Image

1 个答案:

答案 0 :(得分:0)

这有效:

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){}