如何将 JTextArea 拆分为行范围并将它们保存到单独的文件中?
How to split JTextArea to ranges of lines and save them to separate fiels?
我的简单程序从键盘或文本字段获取输入并将其放入 JTextArea,如下所示:
1111,1111;\n
2222,2222;\n
3333,3333;\n
.
.
.
\n
当我输入完数据后,我想将它保存到 txt 文件中,但是有一个条件 - 当超过 30 行时,来自 jtextarea 的数据必须分成更小的 "packages"(每个一个必须只有 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 ) 行应该是空的。
最简单的方法是什么?
这个有效:
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){}
我的简单程序从键盘或文本字段获取输入并将其放入 JTextArea,如下所示:
1111,1111;\n
2222,2222;\n
3333,3333;\n
.
.
.
\n
当我输入完数据后,我想将它保存到 txt 文件中,但是有一个条件 - 当超过 30 行时,来自 jtextarea 的数据必须分成更小的 "packages"(每个一个必须只有 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 ) 行应该是空的。 最简单的方法是什么?
这个有效:
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){}