我的简单程序从键盘或文本字段输入并将其放到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)行应该是空的。 最简单的方法是什么?
答案 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){}