我必须编写将反转字符串顺序的代码并将其写入新文件中。例如:
我的名字是鲍勃。
我十岁。
相反的将是:
我十岁。
我的名字是鲍勃。
这是我到目前为止所拥有的。不确定要为outWriter print语句写什么。任何帮助将不胜感激。谢谢!
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
public class FileRewinder {
public static void main(String[] args) {
File inputFile = new File("ascii.txt");
ArrayList<String> list1 = new ArrayList<String>();
Scanner inputScanner;
try {
inputScanner = new Scanner(inputFile);
} catch (FileNotFoundException f) {
System.out.println("File not found :" + f);
return;
}
while (inputScanner.hasNextLine()) {
String curLine = inputScanner .nextLine();
System.out.println(curLine );
}
inputScanner.close();
File outputFile = new File("hi.txt");
PrintWriter outWriter = null;
try {
outWriter = new PrintWriter(outputFile);
} catch (FileNotFoundException e) {
System.out.println("File not found :" + e);
return;
}
outWriter.println(???);
outWriter.close();
}
}
答案 0 :(得分:1)
我的建议是首先阅读整个文件并在.
中存储句子(您可以按LinkedList<String>
分割)(这将保持广告订单顺序)
然后使用Iterator
并以相反的顺序获得句子。并将它们写入文件。确保在每个句子之后放置.
。
答案 1 :(得分:0)
在System.out.println(curLine );
添加list1.add(curline);
之后,会将您的文字行放入列表中。
最后在list1
向后创建一个循环:
for(int i = list1.size() - 1 , i > 0, --i) {
outWriter.println(list1[i]);
}
答案 2 :(得分:0)
如果文件包含可以加载到内存中的行数。您可以将所有行读入列表,颠倒列表的顺序并将列表写回磁盘。
public class Reverse {
static final Charset FILE_ENCODING = StandardCharsets.UTF_8;
public static void main(String[] args) throws IOException {
List<String> inLines = Files.readAllLines(Paths.get("ascii.txt"), FILE_ENCODING);
Collections.reverse(inLines);
Files.write(Paths.get("hi.txt"), inLines, FILE_ENCODING);
}
}