解决方案 »
- 使用数据库连接池方式编码的时候为什么要close()
- 编写一个类,包括一个字符串变量,在定义处将期初始化.另一个字符串变量由构建器初始化.说明这两种方法的区别?
- 紧急求救!搜索引擎Lucene2.0创建海量(600万条数据)索引文件!
- java.lang.reflect.InvocationTargetException
- 字符问题
- java有没有查看内存使用情况的函数
- 求助,关于java多线程的问题
- 对于web日志结构的分析。。
- 大家看看我用java写的一个ftp客户端程序
- 请问如何实现鼠标拖放选购的物品到购物篮的程序!如果嫌分不够再加!!!
- 关于一个排列算法所需的时间的问题
- java 文件属性
class TxtLine{
private String src;
private String author;
private String date;
private String status;
private String url;
//generate getter() and setter(String str)...
}
public class Main{
public static main(String[] args) {
List<TxtLine> lineList = new ArrayList<TxtLine>();
File file = new File("your file path...");
BufferedReader br = new BufferedReader(new FileReader(file));
String line = null;
while(null != (line = br.readLine())) {
String[] strArray = line.split(" ");
TxtLine txtLine = new TxtLine();
txtLine.set(...);
...
}
br.close();
for(int i=0; i<lineList.size(); i++) {
TxtLine txtLine = lineList.get(i);
System.out.println(txtLine.get(...) + "\t" + txtLine.get(...));
}
...
}
}伪代码,希望有用,O(∩_∩)O~
列之间的空格有的是一个,有的是四个,五个,空格是这样分布的:
file/ta Wangzh 10-03-14 19:04 Checked in $/电子文档管理系统/开发域/
上面因为csdn这个编辑器的问题都给压缩成一个空格了
public List<String> readFile(final String filename) throws IOException
{
List<String> filecon = new ArrayList<String>();
String m = "";
BufferedReader file = new BufferedReader(new FileReader("temp.txt"));
while ((m = file.readLine()) != null)
{
if (!m.equals("0")) //文本结束的标志
{
if (!m.equals("")) //不需要读取空行
{
filecon.add(m);
}
}
}
file.close();
return filecon;
}
file/ta Wangzh(五个空格)10-03-14(2个空格) 19:04 (四个空格)Checked(1个空格) in (1个空格)$/电子文档管理系统/开发域/
读完文件遍历arrayList,去每次得到的第i个元素的对应属性就好
第一列有的跨一行,有的跨两行, 还有的是三行
String test = "src/com/unis/file/co Wangzh 10-03-14 19:04 deleted 3";
String regx = "(.*?)[-0-9: ]+(Checked in|deleted)";
Pattern p = Pattern.compile(regx);
Matcher m = p.matcher(test);
while(m.find()){
System.out.println(m.group(1));
System.out.println(m.group(2));
}
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;public class CSDNFile {
public static void main(String[] args) {
try {
File file = new File("f:/list1.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
// BufferedWriter bw = new BufferedWriter(new FileWriter(new File("f:/result.txt")));
String line = null;
String[][] s = new String[1000][];
int index = 0;
while(null != (line=br.readLine())) {
s[index++] = line.split(" {1,}");
}
br.close();
outputContent(s, index);
for(int i=2; i<index; i++) {
if(null != s[i][0] && (s[i][0].contains("src") || s[i][0].contains("WebRoot"))) {
System.out.println(s[i][0] + "\t" + (s[i][4].contains("Checked") ? s[i][4] + s[i][5] : s[i][4]));
// bw.write(s[i][0] + "\t" + (s[i][4].contains("Checked") ? s[i][4] + s[i][5] : s[i][4]) + "\u1310");
// bw.flush();
}
System.out.println();
}
// bw.close();
}catch (Exception e) {
e.printStackTrace();
}
}
public static void outputContent(String[][] s, int index) {
for(int i=2; i<index;) {
if(null != s[i+2][1]) {
if(s[i+2][1].contains(".") || s[i+2][1].length() <=5) {
s[i][0] += s[i+1][1] + s[i+2][1];
i+=3;
}else {
s[i][0] += s[i+1][1];
i+=2;
}
}else {
i++;
}
}
}
}//Result
/*src/com/unis/file/convert/AcadConverter.java Checkedin
src/com/unis/jbpm/mytask/PurviewApplyAction.java CheckedinWebRoot/style/css/box.css Checkedin
WebRoot/WEB-INF/pages/jbpm/mytask/purview_apply.jsp Checkedin*/
在本机已经运行过了,如果你要保存为文件,把注释代码取消注释就好了,那个换行搞不定
public static void main(String[] args) throws IOException {
File file = new File(Class.class.getResource("/").getPath() + "\\config.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
String readStr = null;
while((readStr = br.readLine()) != null) {
String regx = "(.*?)[Wangzh - -0-9: ]+(Checked in|deleted)";
Pattern p = Pattern.compile(regx);
Matcher m = p.matcher(readStr);
while(m.find()){
System.out.println(m.group(1)+" # " + m.group(2));
}
}
br.close();
}
剩下的就交给你咯~~~
如果开头一行就包含了.jsp或.java文件,在处理时会有问题,你要在下面的那个静态函数里边判断好这样的情况,我的判断囊括了大部分,但是不全面,期待改进~
明天应该会有答案的,没有的话,我再帖改进的上来,回家了~
这个问题哪位高手可以帮忙解决一下???????
//静态函数的修改
public static void outputContent(String[][] s, int index) {
for(int i=2; i<index;) {
if(null != s[i][0] || !"".equals(s[i][0])) {
if(s[i].length >=6) {
if(s[i+1].length <=5) {
if(s[i+2].length <=5) {
if(null != s[i+3] && s[i+3].length <= 5 && s[i+3][1].length() < 5) {
s[i][0] += s[i+1][1] + s[i+2][1] + s[i+3][1];
s[i+1][0] = null;
s[i+2][0] = null;
s[i+3][0] = null;
i+=4;
}else {
s[i][0] += s[i+1][1] + s[i+2][1];
s[i+1][0] = null;
s[i+2][0] = null;
i+=3;
}
}else {
if(!s[i][0].contains(".xml") && (s[i+1][1].length() <=5 || s[i+1][1].contains("."))) {
s[i][0] += s[i+1][1];
s[i+1][0] = null;
}
i+=2;
}
}else {
i++;
}
}else {
i++;
}
}else {
i++;
}
}
}
//循环输出结果修改
for(int i=2; i<index; i++) {
if(null != s[i][0] && !"".equals(s[i][0])) {
System.out.println(s[i][0] + "\t\t" + (s[i][4].contains("Checked") ? s[i][4] + s[i][5] : s[i][4]));
// bw.write(s[i][0] + "\t" + (s[i][4].contains("Checked") ? s[i][4] + s[i][5] : s[i][4]) + "\u1310");
// bw.flush();
}
System.out.println();
}
//本机测试,全部通过~
/*刚吃过饭回来,给你说个思路行不?
假设二维字符串数组String[][] sort已经接收好了你要输出的内容,其中sort[i]]0]存放路径, sort[i][1]存放操作类型*/
for(int i=0; i<sort.length-1 && null != s[i][0]; i++) {
int changeIndex = i;
for(int j=i+1; j<.sort.length) {
if(sort[i][0] > sort[j][0]) {
changeIndex = j;
}
}
if(i != changeIndex) {
swap(s[i], s[j]);
}
}
/*上面的sort[i][0] > sort[j][0]是字符串的比较,你自己写一个方法来替换这里就行
下面的swap(s[i], s[j])是交换两个一位字符串数组,实现起来很简单的吧~
自己写写看,相信你能行的~*/
package com.feng.util;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Arrays;
import java.util.Comparator;public class CSDNFile {
public static void main(String[] args) {
try {
File file = new File("E:\\data\\list1.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
// BufferedWriter bw = new BufferedWriter(new FileWriter(new File("f:/result.txt")));
String line = null;
String[][] s = new String[1000][];
int index = 0;
while(null != (line=br.readLine())) {
s[index++] = line.split(" {1,}");
}
br.close();
outputContent(s, index);
for(int i=0; i<s.length-1 && null != s[i][0]; i++) {
int changeIndex = i;
for(int j=i+1; j<s.length;) {
if(s[i][0].compareTo(s[j][0])<0) {
changeIndex = j;
}
if(i != changeIndex) {
swap(s[i], s[j]);
}
}
} //Arrays.sort(s, new TwoDimArrayComparator());
for(int i=2; i<index; i++) {
if(null != s[i][0] && !"".equals(s[i][0])) {
System.out.println(s[i][0] + "\t\t" + (s[i][4].contains("Checked") ? s[i][4] +" "+ s[i][5] : s[i][4]));
// bw.write(s[i][0] + "\t" + (s[i][4].contains("Checked") ? s[i][4] + s[i][5] : s[i][4]) + "\u1310");
// bw.flush();
}
System.out.println();
}// bw.close();
}catch (Exception e) {
e.printStackTrace();
}
}
public static void swap(String[] s1,String[] s2){
String[] temp = s1;
s1 = s2;
s2 = temp;
}
public static void outputContent(String[][] s, int index) {
for(int i=2; i<index;) {
if(null != s[i][0] || !"".equals(s[i][0])) {
if(s[i].length >=6) {
if(s[i+1].length <=5) {
if(s[i+2].length <=5) {
if(null != s[i+3] && s[i+3].length <= 5 && s[i+3][1].length() < 5) {
s[i][0] += s[i+1][1] + s[i+2][1] + s[i+3][1];
s[i+1][0] = null;
s[i+2][0] = null;
s[i+3][0] = null;
i+=4;
}else {
s[i][0] += s[i+1][1] + s[i+2][1];
s[i+1][0] = null;
s[i+2][0] = null;
i+=3;
}
}else {
if(!s[i][0].contains(".xml") && (s[i+1][1].length() <=5 || s[i+1][1].contains("."))) {
s[i][0] += s[i+1][1];
s[i+1][0] = null;
}
i+=2;
}
}else {
i++;
}
}else {
i++;
}
}else {
i++;
}
}
}}
...
String line = null;
String[][] s = new String[1000][];
String[][] sort = new String[1000][2]; //Add Line
...
outputContent(s, index);
for(int i=2; i<index; i++) {
if(null != s[i][0] && !"".equals(s[i][0])) {
sort[i][0] = s[i][0];//Change Line
sort[i][1] = s[i][4].contains("Checked") ? s[i][4] + s[i][5] : s[i][4];//Change Line
}
}
sort = printSortResult(sort);//Add Line
//Output...
for(int i=0; i<sort.length; i++) {
if(null != sort[i][0] && !"".equals(sort[i][0])) {
System.out.println(sort[i][0] + "\t\t" + sort[i][1]);
}
}
catch(...//Old Catch...
}
//New Static Method
public static String[][] printSortResult(String[][] sort) {
for(int i=0; i<sort.length-1; i++) {
int changeIndex = i;
for(int j=i+1; j<sort.length; j++) {
if(null != sort[i][0] && !"".equals(sort[i][0]) && null != sort[j][0] && !"".equals(sort[j][0])) {
if(sort[changeIndex][0].compareTo(sort[j][0]) > 0) {
changeIndex = j;
}
}
}
if(i != changeIndex) {
String[] temp = sort[i];
sort[i] = sort[changeIndex];
sort[changeIndex] = temp;
}
}
return sort;
}
//And The Result...
/*
WebRoot/WEB-INF/pages/file/anonymousvisit/add.jsp Checkedin
WebRoot/WEB-INF/pages/file/anonymousvisit/viewpassword.jsp Checkedin
WebRoot/WEB-INF/pages/file/corporation/corporation.jsp Checkedin
WebRoot/upload.jsp Checkedin
...
build.xml Checkedin
build.xml Checkedin
build.xml Checkedin
build.xml Added
...
conf/applicationContext-resources.xml Checkedin
src/com/unis/xfire/service/ClientRequestServiceImpl.java Checkedin
...
ssl配置/ssl配置步骤.txt Checkedin
ssl配置/ssl配置步骤.txt Checkedin
ssl配置/ssl配置步骤.txt Checkedin
ssl配置/ssl配置步骤.txt Added*/
//End
public List<String> readFile(final String filename) throws IOException
{
List<String> filecon = new ArrayList<String>();
String m = "";
BufferedReader file = new BufferedReader(new FileReader("temp.txt"));
while ((m = file.readLine()) != null)
{
if (!m.equals("0")) //文本结束的标志
{
if (!m.equals("")) //不需要读取空行
{
filecon.add(m);
}
}
}
file.close();
return filecon;
}
在输出时做一下控制就好了,只要当前行和上一行not equals,则输出int tempIndex = 0;
for(int i=0; i<sort.length; i++) {
if(null != sort[i][0] && !"".equals(sort[i][0]) && (tempIndex != 0 || !sort[tempIndex][0].equals(sort[i][0]))) {//路径重复就算重复,条件你可以再加
System.out.println(sort[i][0] + "\t\t" + sort[i][1]);
temp = i;
}
}
for(int i=0; i<sort.length; i++) {
if(null != sort[i][0] && !"".equals(sort[i][0])) {
if((tempIndex == 0 || (!sort[i][0].equals(sort[tempIndex][0])) || (!sort[i][1].equals(sort[tempIndex][1])))) {
System.out.println(sort[i][0] + "\t\t" + sort[i][1]);
tempIndex = i;
}
}
}
/*
这个是测试通过的路径和状态都相同才算做重复的无重复输出
不知道说什么好~~~
*/
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;public class CSDNFile {
public static void main(String[] args) {
try {
File file = new File("f:/list1.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
// BufferedWriter bw = new BufferedWriter(new FileWriter(new File("f:/result.txt")));
String line = null;
String[][] s = new String[1000][];
String[][] sort = new String[1000][2];
int index = 0;
while(null != (line=br.readLine())) {
s[index++] = line.split(" {1,}");
}
br.close();
outputContent(s, index);
for(int i=2; i<index; i++) {
if(null != s[i][0] && !"".equals(s[i][0])) {
sort[i][0] = s[i][0];
sort[i][1] = s[i][4].contains("Checked") ? s[i][4] + s[i][5] : s[i][4];
// bw.write(s[i][0] + "\t" + (s[i][4].contains("Checked") ? s[i][4] + s[i][5] : s[i][4]) + "\u1310");
// bw.flush();
}
}
// bw.close();
sort = printSortResult(sort);
int tempIndex = 0;
for(int i=0; i<sort.length; i++) {
if(null != sort[i][0] && !"".equals(sort[i][0])) {
if((tempIndex == 0 || (!sort[i][0].equals(sort[tempIndex][0])) || (!sort[i][1].equals(sort[tempIndex][1])))) {
System.out.println(sort[i][0] + "\t\t" + sort[i][1]);
tempIndex = i;
}
}
}
}catch (Exception e) {
e.printStackTrace();
}
}
public static String[][] printSortResult(String[][] sort) {
for(int i=0; i<sort.length-1; i++) {
int changeIndex = i;
for(int j=i+1; j<sort.length; j++) {
if(null != sort[i][0] && !"".equals(sort[i][0]) && null != sort[j][0] && !"".equals(sort[j][0])) {
if(sort[changeIndex][0].compareToIgnoreCase(sort[j][0]) > 0) {
changeIndex = j;
}
}
}
if(i != changeIndex) {
String[] temp = sort[i];
sort[i] = sort[changeIndex];
sort[changeIndex] = temp;
}
}
return sort;
}
public static void outputContent(String[][] s, int index) {
for(int i=2; i<index;) {
if(null != s[i][0] || !"".equals(s[i][0])) {
if(s[i].length >=6) {
if(s[i+1].length <=5) {
if(s[i+2].length <=5) {
if(null != s[i+3] && s[i+3].length <= 5 && s[i+3][1].length() < 5) {
s[i][0] += s[i+1][1] + s[i+2][1] + s[i+3][1];
s[i+1][0] = null;
s[i+2][0] = null;
s[i+3][0] = null;
i+=4;
}else {
s[i][0] += s[i+1][1] + s[i+2][1];
s[i+1][0] = null;
s[i+2][0] = null;
i+=3;
}
}else {
if(!s[i][0].contains(".xml") && (s[i+1][1].length() <=5 || s[i+1][1].contains("."))) {
s[i][0] += s[i+1][1];
s[i+1][0] = null;
}
i+=2;
}
}else {
i++;
}
}else {
i++;
}
}else {
i++;
}
}
}
}
/*
小姑娘抓点儿紧哈,不是所有人都有时间给你贴这个代码,我也不是什么时候都有时间来写这些代码,灵活变通,积极上进,被老板开了可不是闹着玩儿的,祝你好运~By A 一年级的坏学生
*/