Java 从后面写课文
在标题中,我想从后面写下我的文本,然后输入文本文件。首先,我从文本文件中读取文本,然后我想将其保存在文本文件中,但在最后写入。我不知道如何修复我的代码。我的代码读取文本文件,然后写入文本文件,但顺序相同,从头到尾 它必须如何工作的示例: 输入文本:Java 从后面写课文,java,bufferedreader,bufferedwriter,Java,Bufferedreader,Bufferedwriter,在标题中,我想从后面写下我的文本,然后输入文本文件。首先,我从文本文件中读取文本,然后我想将其保存在文本文件中,但在最后写入。我不知道如何修复我的代码。我的代码读取文本文件,然后写入文本文件,但顺序相同,从头到尾 它必须如何工作的示例: 输入文本: aaaaa bbbb ccc dd f 输出文本: f dd ccc bbbb aaaaa 我的代码: import java.io.BufferedReader; import java.io.BufferedWriter; import ja
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();
}
}
}
将文件读取为字符串
从末尾开始将字符串数据写入文件
对于行,使用字符串数组存储文件中的数据,然后从数组的末尾遍历到开头
这是完整的程序
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();
}
}
}
导入java.io.BufferedReader;
导入java.io.BufferedWriter;
导入java.io.FileReader;
导入java.io.FileWriter;
导入java.util.ArrayList;
导入java.util.List;
公共类加载{
公共静态void main(字符串[]args){
试一试{
BufferedReader br=新的BufferedReader(新文件读取器(
"DB.xml),;
字符串行,txt=“”;
列表行=新的ArrayList();
而((line=br.readLine())!=null){
行。添加(行);
}
System.out.println(txt);
br.close();
BufferedWriter bw=新的BufferedWriter(新文件写入程序(“文件2”));
对于(int i=lines.size()-1;i>=0;i--){
write(line.get(i));
换行符();
}
bw.close();
}捕获(例外e){
e、 printStackTrace();
}
}
}
您需要一个行列表,因为您事先不知道条目的数量,所以您需要一些可以随代码增长的内容
List<String> lines = new ArrayList<String>();
然后按相反顺序将它们写入文件:
for(int i = lines.size() - 1; i >= 0; i--) {
bw.write(lines.get(i));
bw.newLine();
}
它应该在以下方面发挥作用:
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();
}
}
}
封装测试;
导入java.io.BufferedReader;
导入java.io.BufferedWriter;
导入java.io.FileReader;
导入java.io.FileWriter;
导入java.util.ArrayList;
/**
*
*@作者
*/
公开课阅读{
公共静态void main(字符串[]args){
试一试{
BufferedReader br=新的BufferedReader(新文件读取器(
“D:/file.txt”);
字符串行,txt=“”;
ArrayList行=新的ArrayList();
而((line=br.readLine())!=null){
行。添加(行);
}
System.out.println(txt);
br.close();
BufferedWriter bw=新的BufferedWriter(新的FileWriter(“D:/file2.txt”);
对于(int i=lines.size()-1;i>=0;i--){
write(line.get(i));
换行符();
}
bw.close();
}捕获(例外e){
e、 printStackTrace();
}
}
}
您的代码未正确连接字符串。如果试图颠倒顺序,则需要将行文本添加到字符串的开头,而不是末尾
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的方法更接近于您已有的方法。您也可以使用递归而不保留列表,但要注意递归和填充列表都会对非常大的文件产生爆炸。您可以使用递归,但这会将
O(n)
操作变成O(n^2)
操作符,我们认为n是行数。如果你要问一个问题,至少要努力把空间放在正确的位置,用大写“i”代替“i”。
StringBuilder txt = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
txt.insert(0, line + "\n");
}
System.out.println(txt.toString());