I have .txt file has :
Running filter Servers_all
PASSED: uauxrp04.capitalhealth.ca
PASSED: rauxrp03.capitalhealth.ca
PASSED: rantorlc01-mp.capitalhealth.ca
PASSED: gnntprnt01-mp.capitalhealth.ca
PASSED: rantsmsrv01-mp.capitalhealth.ca
PASSED: rantthlth01-mp.capitalhealth.ca Convert it to a new file:
1. no first line;
2. no "PASSED:"
3. If you can sort it with name, it is even better, but you can code it without that if it is not easy to code. So the new file will looks like:
rauxrp03.capitalhealth.ca
uantchdc02.capitalhealth.ca
uantcitrix04.capitalhealt
uauxlab0.cha.ab.ca
uauxrp04.capitalhealth.ca
vmntrkm01.capitalhealth.ca
Running filter Servers_all
PASSED: uauxrp04.capitalhealth.ca
PASSED: rauxrp03.capitalhealth.ca
PASSED: rantorlc01-mp.capitalhealth.ca
PASSED: gnntprnt01-mp.capitalhealth.ca
PASSED: rantsmsrv01-mp.capitalhealth.ca
PASSED: rantthlth01-mp.capitalhealth.ca Convert it to a new file:
1. no first line;
2. no "PASSED:"
3. If you can sort it with name, it is even better, but you can code it without that if it is not easy to code. So the new file will looks like:
rauxrp03.capitalhealth.ca
uantchdc02.capitalhealth.ca
uantcitrix04.capitalhealt
uauxlab0.cha.ab.ca
uauxrp04.capitalhealth.ca
vmntrkm01.capitalhealth.ca
要求很简单
1.除去第一行
2.除去前面的PASSED:
3.最好能按名称排序
4.读取从文本文件。最好能输出到另一个TXT文件
String tmp = "";
BufferedReader br=null;
RandomAccessFile rf = null;
try {
br = new BufferedReader(new FileReader("test.txt"));
rf = new RandomAccessFile("result.txt", "rw");
int flag = 0;
while((tmp=br.readLine())!=null){
flag++;
if(flag==1)
continue;
tmp = tmp.substring(tmp.indexOf(":")+1);
rf.writeBytes(tmp+"\n");
System.out.println(tmp);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(rf!=null){
try {
rf.close();
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
import java.io.*;
import java.util.*;
public class test { public static void main(String[] args) {
// TODO Auto-generated method stub
SortText st=new SortText();
st.sort("d:\\change.txt");
}
}
class SortText{
public void sort(String srcText){//参数srcText为要处理的txt文件,包括路径
ArrayList<String> temp=new ArrayList<String>();
File file=new File(srcText);
String s=null;
// 读取txt到arraylist中
try{
BufferedReader read=new BufferedReader(new FileReader(file));
read.readLine();
while((s=read.readLine())!= null){
s=s.replaceAll("^PASSED:\\s+", "");
temp.add(s);
}
// 排序arraylist
String ex=null;
for(int i=0;i<temp.size()-2;i++)
for(int j=i+1;j<temp.size()-1;j++)
if(temp.get(i).compareTo(temp.get(j))>0){
ex=temp.get(i);
temp.set(i,temp.get(j));
temp.set(j,ex);
}
//输出到新文本文件名为new.txt
PrintWriter out=new PrintWriter(new FileWriter("d:\\newfile.txt"));
//你可以自己设定新文件名和路径
for(String i:temp){
out.println(i);
}
read.close();
out.close();
}catch(IOException e){
//
}
}
}
import java.util.*;public class Test01 {
public static void parse(String sourceFileName, String destinationFileName) {
BufferedReader reader = null;
BufferedWriter writer = null;
List<String> lines = new LinkedList<String>(); try {
reader = new BufferedReader(new FileReader(sourceFileName));
writer = new BufferedWriter(new FileWriter(destinationFileName)); String line; reader.readLine(); // 去掉第一行.
while ((line = reader.readLine()) != null) {
// 去掉前缀"PASSED:", 然后存入list.
lines.add(line.substring(
line.indexOf("PASSED:") + "PASSED:".length()).trim());
} // 排序
Collections.sort(lines); // 写入文件
Iterator<String> iter = lines.iterator();
while (iter.hasNext()) {
writer.write(iter.next());
writer.newLine();
} } catch (IOException ioex) {
ioex.printStackTrace();
} finally {
// Close the opened files.
if (reader != null) {
try {
reader.close();
} catch (IOException ioex) {
ioex.printStackTrace();
}
} if (writer != null) {
try {
writer.close();
} catch (IOException ioex) {
ioex.printStackTrace();
}
}
}
} public static void main(String args[]) {
Test01.parse("src.txt", "des.txt"); // 源文件名, 保存的文件名
}
}
KKK2007 很想给你200分,可是论坛功能好像...
============
每个帖子只能加分一次,加分后过期日延后15天!
加分: 100 (目前只能加100分)
============
不知道能不能直接转账。Inhibitory 的代码似乎更加简洁规范。感谢KKK2007 ,chaucer518 ,Inhibitory ...