【问题标题】:JAVA String Reversing order of string in file ioJAVA字符串反转文件io中字符串的顺序
【发布时间】:2015-01-14 04:27:53
【问题描述】:

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

嗨,我叫鲍勃。

我已经十岁了。

反过来是:

我已经十岁了。

嗨,我叫鲍勃。

这是我目前所拥有的。不确定为 outWriter 打印语句写什么。任何帮助将不胜感激。谢谢!

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();




    }
}

【问题讨论】:

    标签: java string file io


    【解决方案1】:

    我的建议是先阅读整个文件并在LinkedList&lt;String&gt; 中存储句子(你可以用. 分割)(这将保持插入顺序)

    然后使用Iterator,逆序获取句子。并将它们写入文件。确保在每个句子后面加上.

    【讨论】:

    • 据我了解,请求者不想将文本拆分成句子。
    【解决方案2】:

    System.out.println(curLine ); 之后添加list1.add(curline);,这会将您的文本行放入您的列表中。

    最后在list1 上向后创建一个循环:

    for(int i = list1.size() - 1 , i > 0, --i) {
         outWriter.println(list1[i]);
    }
    

    【讨论】:

      【解决方案3】:

      如果文件包含可以加载到内存中的行数。您可以将所有行读入一个列表,颠倒列表的顺序并将列表写回磁盘。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-18
        • 1970-01-01
        • 2021-12-01
        • 2010-11-03
        • 2011-11-07
        相关资源
        最近更新 更多