就像在tittle中一样,我想从后面写下我的文本并输入到文本文件中。首先,我从文本文件中读取文本,接下来我想将其保存在文本文件中,但是在结束时写入。我没有任何想法如何修复我的代码。我的代码读取文本文件,并编写文本文件,但顺序相同,从开始到结束。
示例如何运作:
输入文字:
aaaaa
bbbb
ccc
dd
f
输出文字:
f
dd
ccc
bbbb
aaaaa
我的代码:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
public class Loading {
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new FileReader(
"file.txt.txt"));
String line, txt = "";
String[] splittedLine;
while ((line = br.readLine()) != null) {
txt += linia + "\n";
splittedLine = line.split(" ");
}
System.out.println(txt);
br.close();
BufferedWriter bw = new BufferedWriter(new FileWriter("file2"));
bw.write(txt);
bw.newLine();
bw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
答案 0 :(得分:1)
将文件读取到字符串
从字符串开始将字符串数据写入文件。
对于行,使用String数组存储来自文件的数据,然后从数组的结尾遍历到数据的开始。
这是完整的程序。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.List;
public class Loading {
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new FileReader(
"DB.xml"));
String line, txt = "";
List<String> lines = new ArrayList<String>();
while ((line = br.readLine()) != null) {
lines.add(line);
}
System.out.println(txt);
br.close();
BufferedWriter bw = new BufferedWriter(new FileWriter("file2"));
for(int i=lines.size()-1; i>=0; i--){
bw.write(lines.get(i));
bw.newLine();
}
bw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
答案 1 :(得分:1)
你会想要一个行列表,因为你事先不知道条目的数量,所以你想要一些可以随你的代码增长的东西。
List<String> lines = new ArrayList<String>();
并添加所有行
while ((line = br.readLine()) != null) {
lines.add(line);
}
然后以相反的顺序将它们写入您的文件:
for(int i = lines.size() - 1; i >= 0; i--) {
bw.write(lines.get(i));
bw.newLine();
}
答案 2 :(得分:1)
您的代码错误地连接了字符串。如果您试图颠倒顺序,它需要将行文本添加到字符串的开头而不是结尾。
txt = line + txt + "\n"; //original: txt += linia + "\n"
但最好使用StringBuilder对象来处理串联。有点像...
StringBuilder txt = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
txt.insert(0, line + "\n");
}
System.out.println(txt.toString());
我同意其他答案中的数组方法也可行,并且可能更容易阅读和维护。但StringBuilder的方法更接近你已有的方法。
答案 3 :(得分:0)
应该有效:
package test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
/**
*
* @author
*/
public class Read {
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new FileReader(
"D:/file.txt"));
String line, txt = "";
ArrayList<String> lines = new ArrayList<String>();
while ((line = br.readLine()) != null) {
lines.add(line);
}
System.out.println(txt);
br.close();
BufferedWriter bw = new BufferedWriter(new FileWriter("D:/file2.txt"));
for(int i = lines.size()-1; i>=0; i--){
bw.write(lines.get(i));
bw.newLine();
}
bw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}