JAVA String在文件io中反转字符串的顺序

时间:2015-01-14 04:27:54

标签: java string file io

我必须编写将反转字符串顺序的代码并将其写入新文件中。例如:

我的名字是鲍勃。

我十岁。

相反的将是:

我十岁。

我的名字是鲍勃。

这是我到目前为止所拥有的。不确定要为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();




    }
}

3 个答案:

答案 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);
    }
}