Jes*_*ssy 5 java sorting file text-files
对txt文件中的数据进行了一些修改.我已经尝试了建议的代码,但我没有成功地用这种格式在txt文件中再次写它.我尝试了collection.sort但是它用长线写了数据.
我的txt文件包含以下数据:
Monday
Jessica Run 20mins
Alba Walk 20mins
Amy Jogging 40mins
Bobby Run 10mins
Tuesday
Mess Run 20mins
Alba Walk 20mins
Christy Jogging 40mins
Bobby Run 10mins
Run Code Online (Sandbox Code Playgroud)
如何按升序对这些数据进行排序,并在排序后将其再次存储在txt文件中?
Monday
Alba Walk 20mins
Amy Jogging 40mins
Bobby Run 10mins
Jessica Run 20mins
Tuesday
Alba Walk 20mins
Bobby Run 10 mins
Christy Jogging 40mins
Mess Run 20mins
Jessica Run 20mins
Run Code Online (Sandbox Code Playgroud)
Pet*_*erg 16
这是我想出来的:
import java.io.*;
import java.util.*;
public class Sort {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new FileReader("fileToRead"));
Map<String, String> map=new TreeMap<String, String>();
String line="";
while((line=reader.readLine())!=null){
map.put(getField(line),line);
}
reader.close();
FileWriter writer = new FileWriter("fileToWrite");
for(String val : map.values()){
writer.write(val);
writer.write('\n');
}
writer.close();
}
private static String getField(String line) {
return line.split(" ")[0];//extract value you want to sort on
}
}
Run Code Online (Sandbox Code Playgroud)
这是一种非常懒惰的方法,因为您只对第一个单词进行排序:
ArrayList<String> rows = new ArrayList<String>();
BufferedReader reader = new BufferedReader(new FileReader("input.txt"));
String s;
while((s = reader.readLine())!=null)
rows.add(s);
Collections.sort(rows);
FileWriter writer = new FileWriter("output.txt");
for(String cur: rows)
writer.write(cur+"\n");
reader.close();
writer.close();
Run Code Online (Sandbox Code Playgroud)
小智 5
package com.myFiles;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
public class FilesReaderWriter {
public static void main(String[] args) throws IOException {
BufferedReader reader = null;
PrintWriter outputStream = null;
ArrayList<String> rows = new ArrayList<String>();
try {
reader = new BufferedReader(new FileReader("Input.txt"));
outputStream = new PrintWriter(new FileWriter("Output.txt"));
String file;
while ((file = reader .readLine()) != null) {
rows.add(file);
}
Collections.sort(rows);
String[] strArr= rows.toArray(new String[0]);
for (String cur : strArr)
outputStream.println(cur);
} finally {
if (reader != null) {
inputStream.close();
}
if (outputStream != null) {
outputStream.close();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用sort
:
aaron@ares ~$ sort data.txt
Alba Walk 20mins
Amy Jogging 40mins
Bobby Run 10mins
Jessica Run 20mins
aaron@ares ~$ sort data.txt > sorted.txt
aaron@ares ~$ cat sorted.txt
Alba Walk 20mins
Amy Jogging 40mins
Bobby Run 10mins
Jessica Run 20mins
Run Code Online (Sandbox Code Playgroud)
...或使用python
:
aaron@ares ~$ python -c "import sys; print ''.join(sorted(sys.stdin))" < data.txt > sorted.txt
aaron@ares ~$ cat sorted.txt
Alba Walk 20mins
Amy Jogging 40mins
Bobby Run 10mins
Jessica Run 20mins
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
72258 次 |
最近记录: |