//以下是我做的java 文件的缩进排版,算法有缺点.但能用,
//不管怎么说,排java文件时比ultraledit的排版强。
import java.io.file;
import java.io.printstream;
import java.util.arraylist;
import lang9.str9;
import lang9.out;
import util9.load9;
class dentjavacode
{
public static boolean dent(file file, file file1)
{
string as[] = new string[1];
if(file == null !file.exists())
{
return false;
} else
{
as = load9.copy(file, as);
arraylist arraylist = new arraylist();
dent(as, arraylist, 0);
as = (string[])arraylist.toarray(as);
out.b("s.len=" + as.length);
load9.copy(as, file1);
return true;
}
}
public static int dent(arraylist arraylist, arraylist arraylist1, int i)
{
if(arraylist == null && arraylist.size() == 0)
{
system.out.println("dent frm list1,but list1 isnull");
return i;
}
if(arraylist1 == null)
{
system.out.println("dent to list2,but list2 is null");
return i;
} else
{
string as[] = new string[1];
as = (string[])arraylist.toarray(as);
return dent(as, arraylist1, i);
}
}
public static string[] dent(string as[], string as1[], int i)
{
arraylist arraylist = new arraylist();
dent(as, arraylist, i);
if(as1 == null)
as1 = new string[1];
return (string[])arraylist.toarray(as1);
}
public static int dent(string as[], arraylist arraylist, int i)
{
int j = as.length;
boolean flag = false;
if(as == null as.length == 0)
{
system.out.println("dent from s[],but s[] is null");
return i;
}
if(arraylist == null)
{
system.out.println("dent to list,but list is null");
return i;
}
for(int l = 0; l < as.length; l++)
{
if(as[l] == null)
continue;
as[l] = as[l].trim();
int k = as[l].length();
if(k == 0)
continue;
int i1 = str9.indexof_outquotes(special, as[l]);
if(i1 < 0)
{
if(flag)
arraylist.add(space(2) + as[l]);
else
arraylist.add(space(i) + as[l]);
continue;
}
string s = as[l].substring(i1);
if(s.indexof("{") == 0)
s = "{";
else
if(s.indexof("}") == 0)
s = "}";
else
if(s.indexof("//") == 0)
s = "//";
else
if(s.indexof("*/") == 0)
s = "*/";
else
if(s.indexof("/*") == 0)
s = "/*";
if(s.equals("//"))
{
if(i1 > 0)
{
arraylist.add(space(i) + as[l].substring(0, i1));
arraylist.add(space(i) + as[l].substring(i1));
} else
{
arraylist.add(space(i) + as[l]);
}
continue;
}
if(s.equals("*/"))
{
flag = false;
if(i1 > 0)
arraylist.add(space(2) + as[l].substring(0, i1));
arraylist.add("*/");
i1 += 2;
if(k > i1)
{
as[l] = as[l].substring(i1);
l--;
}
continue;
}
if(s.equals("/*"))
{
flag = true;
if(i1 > 0)
{
arraylist.add(space(i) + as[l].substring(0, i1));
as[l] = as[l].substring(i1);
}
if((i1 = str9.indexof_outquotes("*/", as[l], i1 + 2)) != -1)
{
flag = false;
i1 += 2;
arraylist.add(as[l].substring(0, i1));
if(as[l].length() > i1)
{
as[l] = as[l].substring(i1);
l--;
}
continue;
}
if(as[l].length() <= 0)
continue;
arraylist.add("/*");
as[l] = as[l].substring(2);
if(as[l].length() > 0)
arraylist.add(space(2) + as[l]);
continue;
}
if(s.equals("{"))
{
i1++;
if(as[l].indexof("//") == i1)
{
arraylist.add(space(i) + as[l]);
i += increment;
continue;
}
arraylist.add(space(i) + as[l].substring(0, i1));
i += increment;
if(k > i1)
{
as[l] = as[l].substring(i1);
l--;
}
continue;
}
if(s.equals("}"))
{
arraylist.add(space(i) + as[l].substring(0, i1));
i -= increment;
i1++;
if(k > i1 && as[l].charat(i1) == ';')
{
arraylist.add(space(i) + "};");
i1++;
if(k > i1)
{
as[l] = as[l].substring(i1);
l--;
}
continue;
}
if(as[l].indexof("}//") == 0)
{
system.out.println("2s[i]=" + as[l] + ",indent=" + i);
arraylist.add(space(i) + as[l]);
continue;
}
arraylist.add(space(i) + "}");
if(k > i1)
{
as[l] = as[l].substring(i1);
l--;
}
} else
{
arraylist.add(space(i) + as[l]);
}
}
return i;
}
static string space(int i)
{
return str9.repeat(' ', i);
}
public dentjavacode(file file)
{
string as[] = null;
as = load9.copy(file, as);
arraylist arraylist = new arraylist();
dent(as, arraylist, 0);
string s = file.getname();
int i = 0;
boolean flag = false;
file file1;
file1 = file1 = new file(s + "dent0");
i = 1;
do
{
if(i >= 5)
break;
file1 = new file(s + "dent" + i);
if(!file1.exists())
break;
i++;
} while(true);
if(file1.exists())
file1.delete();
if(file.renameto(file1))
{
string as1[] = (string[])arraylist.toarray(as);
load9.copy(as1, file);
system.out.println("ok");
} else
{
system.out.println("rename:false");
}
}
public static void main(string args[])
{
string args1[] = new string[1];
file file = new file(args[0]);
args1 = load9.copy(file, args1);
arraylist arraylist = new arraylist();
dent(args1, arraylist, 0);
file file1 = new file(args[0] + "dent0");
int i = 1;
do
{
if(i >= 5)
break;
file1 = new file(args[0] + "dent" + i);
if(!file1.exists())
break;
i++;
} while(true);
if(file1.exists())
file1.delete();
string args2[] = (string[])arraylist.toarray(args1);
if(file.renameto(file1))
{
load9.copy(args2, file);
system.out.println("ok");
} else
{
system.out.println("rename:false");
}
}
static int increment = 3;
public static string special[] = {
"{", "}", "//", "/*", "*/"
};
}
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器