将第一行替换为最长的 java 文本文件



我需要将文本文件中的第一行替换为最长的,反之亦然。请告诉我我需要修复和添加什么。在此阶段,程序会正确查找最长的行。我是Java的新手,我确定没有太多要修复的问题,但我不知道到底需要什么。此外,如果可能,请帮助在新文件中实现结果的输出。 代码仍然如下所示:

package pkg;
import java.io.*;
import java.nio.file.Files;
import java.util.*;
public class Main {
static int previousLongLine = 0;
public void printLongLine(HashMap longLineMap) {
Set keyofSet = longLineMap.keySet();
Iterator itr = keyofSet.iterator();
while (itr.hasNext()) {
Integer keys = (Integer) itr.next();
String value = (String) longLineMap.get(keys);
System.out.println("Line Number of Longest line: " + keys
+ "nLongest line: " + value);
}
}
public static void main(String []args){
// TODO Auto-generated method stub
String fileName = "G:\colege\bursa\Colege\Programing\pkg\File1.txt";
// This will reference one line at a time
String line = null;
int key = 0;
int lineSize = 0, lineNumber = 0;
Main ln = new Main();
HashMap longLineMap = new HashMap();
try {
// FileReader reads text files in the default encoding.
FileReader fileReader = new FileReader(fileName);
// Always wrap FileReader in BufferedReader.
BufferedReader bufferedReader = new BufferedReader(fileReader);
while ((line = bufferedReader.readLine()) != null) {
lineNumber++;

lineSize = line.length();
if (lineSize > previousLongLine) {
previousLongLine = lineSize;
longLineMap.clear();
longLineMap.put(lineNumber, line);
}

if(lineNumber == 1){
String old = line;
String newl = old.replaceFirst(old, String.valueOf(previousLongLine));
}
}
//close files.
bufferedReader.close();
} catch (FileNotFoundException ex) {
System.out.println("Unable to open file '" + fileName + "'");
} catch (IOException ex) {
System.out.println("Error reading file '" + fileName + "'");
}
ln.printLongLine(longLineMap);
}
}

您可以通过简单的流操作来实现此目的。

直播信息: https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html

我使用了试用资源,它会在处理停止后自动关闭资源。

有关试用资源的信息:https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html

  1. 将文件读入数组列表
  2. 创建另一个列表以保存已排序的元素。
  3. 在 ArrayList 上打开一个包含输入数据的流。
  4. 按大小顺序对行进行排序。使用 Comparator.reverseOrder(( 表示从大到小
  5. 使用下游收集器将输出存储为新列表。
  6. 将排序列表写入文件。

读取文件:

String inputFile = "files/longestLine.txt";
List<String> lines = new ArrayList<>();
try(BufferedReader bufferedReader = new BufferedReader(new FileReader(inputFile))) {
String line = bufferedReader.readLine();
while(line != null){
lines.add(line);
line = bufferedReader.readLine();
}
} catch (IOException e) {
e.printStackTrace();
}

使用流将行按大小顺序排序。

List<String> sortedLines = lines.stream()
.sorted(Comparator.reverseOrder())
.collect(Collectors.toList());

写入文件:

String outputFile = "outputFile.txt";
try(BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(outputFile))) {
for (String line: sortedLines) {
bufferedWriter.write(line);
bufferedWriter.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}

最新更新