G
gearss8888
The program can format Java codes, the codes formatted will have correct indent spaces.
//----------
/*
Modified: 2012-3-1
it can format java codes so as to get the correct indent spaces.
*/
import java.io.IOException;//ÒýÈëÀà
import java.io.*;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.io.StringWriter;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.InputStream;
import java.io.Reader;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import java.awt.Graphics;
import java.awt.Color;
import javax.swing.JFileChooser;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
public class Tidy extends JFrame {
JButton SelectFilebtn, OKbtn;
JTextField FileNameField;
String TabBlank = " "; // ÿһ´ÎtabµÄ¿Õ¸ñ´óС£¬ÕâÀïΪĬÈϵÄËĸö¿Õ¸ñ
int HowManyTab = 0;
boolean HaveUnCleanRow = false; // ¼Ç¼ÓÐûÓбàд²»¹æÕûµÄ³ÌÐò´úÂ룬Èç¹ûÓе¯³ö¶Ô»°¿òÇëÓû§¸ÄÕýÔٹرտØÖÆÌ¨£¬Èç¹ûûÓУ¬²»ÏÔʾ¶Ô»°¿ò¡£
boolean ForWhileIfBlock = false; // ±êÖ¾ÕâÒ»ÐÐÊÇ·ñfor, while or if ¿ªÍ·µ«È´Ã»ÓÐ{}·ûºÅ£¬Õâ˵Ã÷Õâ¸ö¿éÖ»ÓÐÒ»ÐС£
public Tidy () {
this.setTitle( "ÎļþÕûÀíÆ÷");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.WEST; //É趨LayoutµÄλÖÃ
gbc.insets = new Insets(2,2,2,2); //É趨Óë±ß½çµÄ¾àÀë(ÉÏ,×ó,ÏÂ,ÓÒ)
SelectFilebtn = new JButton("Ñ¡ÔñÎļþ");
SelectFilebtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_SelectFilebtn_actionPerformed(e);
}
});
FileNameField = new JTextField("",40);
gbc.gridy=1;
gbc.gridx=0;
this.add(SelectFilebtn, gbc);
gbc.gridx=1;
this.add(FileNameField, gbc);
//--------------
OKbtn = new JButton("OK");
OKbtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String FileName = FileNameField.getText();
d
Kbtn_actionPerformed(e, FileName);
}
});
gbc.gridy=2;
gbc.gridx=0;
this.add(OKbtn, gbc);
//---------------------
this.pack();
this.setVisible(true);
}
protected void do_SelectFilebtn_actionPerformed (ActionEvent e) {
JFileChooser chooser = new JFileChooser();// ´´½¨ÎļþÑ¡ÔñÆ÷
int option = chooser.showOpenDialog(this);// ÏÔʾÎļþ´ò¿ª¶Ô»°¿ò
if (option == JFileChooser.APPROVE_OPTION) {// ÅжÏÓû§ÊÇ·ñÑ¡¶¨Îļþ
File file = chooser.getSelectedFile();// »ñÈ¡Óû§Ñ¡ÔñÎļþ
FileNameField.setText(file.getAbsolutePath());// °ÑÑ¡ÔñµÄÎļþ·¾¶ÏÔʾÔÚÎı¾¿òÖÐ
}
}
protected void d
Kbtn_actionPerformed(ActionEvent e, String ThisFile){
if (!ThisFile.equals("")) {
HowManyTab = 0;
ReadAndCombFile(ThisFile); // ÎļþÃû²»ÄÜΪ¿Õ
}
}
// ¸ù¾Ý{ºÍ}µÄ¸öÊý¾ö¶¨Ã¿Ò»ÐÐÇ°ÃæÐèÒªÌí¼Ó¶àÉÙ¸ötab¿Õ¸ñ
String FileInManyLines (String oneline, int CombRow, String Suffix) {
String PreffixStr; // ÕâÊÇÿһÐпªÊ¼µÄ¿Õ¸ñ£¬ËüÊÇÓÃÀ´·½±ãÔĶÁµÄ
String TrimIt = oneline.trim();
String newoneline = "";
int Diff = 0;
// Java³ÌÐò
if (Suffix.equals(".java")) {
int Conutleft = strFind(TrimIt, "{", 0);
int ConutRight = strFind(TrimIt, "}", 0);
Diff = Conutleft - ConutRight;
// Èç¹ûÇ°ÃæÒ»ÐÐÖ»ÓÐÒ»¸öfor, while or ifµ«Ã»ÓÐ{}£¬ËùÒÔÏÂÃæÒ»ÐоÍËõ½øÁË
if ((Conutleft == 0) && (ConutRight == 0) && ForWhileIfBlock)
Diff = 50;
// for, while or if ¿ªÍ·£¬µ«ÊÇȴûÓÐʹÓÃ{}£¬ËµÃ÷Õâ¸ö¿éÖ»ÓÐÒ»ÐС£
if ((Conutleft == 0) && (ConutRight == 0) && ((TrimIt.startsWith("for")) || (TrimIt.startsWith("while")) || (TrimIt.startsWith("if")) || (TrimIt.startsWith("else")) || (TrimIt.startsWith("else if")))) {
ForWhileIfBlock = true;
Diff= 100;
}
switch (Diff) {
case 1 : {
PreffixStr = ManyTabStr (HowManyTab, TabBlank);
HowManyTab = HowManyTab + 1;
newoneline = PreffixStr + TrimIt; // °Ñǰ׺¿Õ¸ñÌí¼Óµ½ÕâÒ»ÐÐÇ°Ãæ
break;
}
case -1 : {
HowManyTab = HowManyTab - 1;
PreffixStr = ManyTabStr (HowManyTab, TabBlank);
newoneline = PreffixStr + TrimIt; // °Ñǰ׺¿Õ¸ñÌí¼Óµ½ÕâÒ»ÐÐÇ°Ãæ
break;
}
case 0 : {
PreffixStr = ManyTabStr (HowManyTab, TabBlank);
newoneline = PreffixStr + TrimIt; // °Ñǰ׺¿Õ¸ñÌí¼Óµ½ÕâÒ»ÐÐÇ°Ãæ
break;
}
case 50 :{
PreffixStr = ManyTabStr (HowManyTab, TabBlank);
newoneline = PreffixStr + TrimIt; // °Ñǰ׺¿Õ¸ñÌí¼Óµ½ÕâÒ»ÐÐÇ°Ãæ
HowManyTab = HowManyTab - 1;
ForWhileIfBlock = false;
break;
}
case 100 : {
PreffixStr = ManyTabStr (HowManyTab, TabBlank);
newoneline = PreffixStr + TrimIt; // °Ñǰ׺¿Õ¸ñÌí¼Óµ½ÕâÒ»ÐÐÇ°Ãæ
HowManyTab = HowManyTab + 1;
break;
}
default: {
PreffixStr = ManyTabStr (HowManyTab, TabBlank);
newoneline = PreffixStr + TrimIt; // °Ñǰ׺¿Õ¸ñÌí¼Óµ½ÕâÒ»ÐÐÇ°Ãæ
System.out.println("µÚ"+CombRow+"ÐÐ"+"±àд²»¹æÕû£¬Çë¸ÄÕý!");
HaveUnCleanRow = true; // ³ÌÐò×îºóµ¯³ö¶Ô»°¿òÌáÐÑÓû§Õâ¸ö³ÌÐòÓбàд²»¹æÕûµÄ´úÂë¡£
}
}
} else if (Suffix.equals(".f90") || Suffix.equals(".f95")) { // Fortran³ÌÐò
String LowCaseTrimIt = TrimIt.toLowerCase();
if (LowCaseTrimIt.startsWith("program") || LowCaseTrimIt.startsWith("module") || LowCaseTrimIt.startsWith("subroutine") || ((strFind(LowCaseTrimIt, "function", 0) == 1)) || LowCaseTrimIt.startsWith("do ") || (LowCaseTrimIt.startsWith("if") && (LowCaseTrimIt.endsWith("then"))) || LowCaseTrimIt.startsWith("select") || LowCaseTrimIt.startsWith("case")) {
Diff = 1;
}
else if (LowCaseTrimIt.startsWith("end ") || LowCaseTrimIt.startsWith("enddo") || LowCaseTrimIt.startsWith("endif")) {
Diff = 2;
}
else if (LowCaseTrimIt.startsWith("else")) {
Diff = 3;
}
else
{Diff = 100;}
switch (Diff) {
case 1 : {
PreffixStr = ManyTabStr (HowManyTab, TabBlank);
HowManyTab = HowManyTab + 1;
newoneline = PreffixStr + TrimIt; // °Ñǰ׺¿Õ¸ñÌí¼Óµ½ÕâÒ»ÐÐÇ°Ãæ
break;
}
case 2 : {
HowManyTab = HowManyTab - 1;
PreffixStr = ManyTabStr (HowManyTab, TabBlank);
newoneline = PreffixStr + TrimIt; // °Ñǰ׺¿Õ¸ñÌí¼Óµ½ÕâÒ»ÐÐÇ°Ãæ
break;
}
case 3 : {
HowManyTab = HowManyTab - 1;
PreffixStr = ManyTabStr (HowManyTab, TabBlank);
newoneline = PreffixStr + TrimIt; // °Ñǰ׺¿Õ¸ñÌí¼Óµ½ÕâÒ»ÐÐÇ°Ãæ
HowManyTab = HowManyTab + 1;
break;
}
case 100 : {
PreffixStr = ManyTabStr (HowManyTab, TabBlank);
newoneline = PreffixStr + TrimIt; // °Ñǰ׺¿Õ¸ñÌí¼Óµ½ÕâÒ»ÐÐÇ°Ãæ
break;
}
}
} else {// ÆäËû¸ñʽµÄÎļþ
newoneline = oneline;
}
return newoneline;
}
// Éú³ÉÒ»¸ön¸ötab¿Õ¸ñµÄ¿Õ°××Ö·û´®
String ManyTabStr (int howmany, String TabBlank) {
String Str = "";
for (int i = 0; i < howmany; i++)
Str = Str + TabBlank;
return Str;
}
// ·½·¨strFindÓÃÓÚʵÏÖ×Ö·û´®²éÕÒ£¬·µ»ØÆ¥ÅäµÄ´ÎÊý
public int strFind(String s1, String s2, int pos) {
// ±äÁ¿iºÍj·Ö±ð±íʾÖ÷´®ºÍģʽ´®Öе±Ç°×Ö·û´®µÄλÖã¬k±íʾƥÅä´ÎÊý
int i, j, k = 0;
// pos´ú±íÖ÷´®ÖпªÊ¼±È½ÏµÄλÖÃ
// i=pos;
i = 0;// Èç¹û°Ñi=pos¸Ä³É´Ë¾ä½«²»´ÓÊó±êλÖÿªÊ¼ÕÒ£¬¶øÊÇÖ±½Ó´Ó×Ö·û´®Í·¿ªÊ¼ÕÒ£¬i¾ö¶¨×Å¿ªÈç²éÕÒµÄλÖÃ
j = 0;
while (i < s1.length() && j < s2.length()) {
if (s1.charAt(i) == s2.charAt(j)) {
++i;
++j;
if (j == s2.length()) {
// j=s2.length()±íʾ×Ö·û´®Æ¥Åä³É¹¦£¬Æ¥Åä³É¹¦´ÎÊý¼Ó1
k = k + 1;
// ½«Ö¸Ê¾Ö÷´®ºÍģʽÖе±Ç°×Ö·ûµÄ±äÁ¿iºÍj½øÐлØÍË
i = i - j + 1;
j = 0;
}
else {
i = i - j + 1;
j = 0;
}
}
i++;
}
return k;// ΪʲôÕâ¸öwhileÑ»·Ã»ÓÐÒ»¸öÑ»·¿ØÖÆÆ÷ÄØ£¬ÎÒ»¹Ã»ÓÐÀí½âËüµÄ½á¹¹£¿
}
//ÒÔÐÐΪµ¥Î»¶ÁÈ¡Îļþ
String[] readFileByLines (String fileName){
File file = new File(fileName);
ArrayList<String> alllinks = new ArrayList<String>();
BufferedReader reader = null;//´´½¨»º´æ¶ÁÈ¡
try {
reader = new BufferedReader(new FileReader(file));//½«Îļþ·ÅÔÚ»º´æ¶ÁÈ¡ÖÐ
String tempString = null;
//Ò»´Î¶ÁÈëÒ»ÐУ¬Ö±µ½¶ÁÈënullΪÎļþ½áÊø
while ((tempString = reader.readLine()) != null){
alllinks.add(tempString);
}
reader.close();
} catch (IOException e) {//²¶»ñÒì³£
e.printStackTrace();
} finally {//ÄÚÈÝ×ÜÖ´ÐÐ
if (reader != null) {
try {
reader.close();//¹Ø±Õ»º´æ¶ÁÈ¡
} catch (IOException e1) {
}
}
}
String[] links = new String[alllinks.size()];
for (int count = 0; count < alllinks.size(); count++) {links[count] = alllinks.get(count);}
return links;
}
// °Ñ×Ö·û´®Êý×éдÈëÎļþ, ¼´°´ÐÐдÈëÎļþ
public boolean stringArrayToFile(String[] arrayres, String filePath) {
boolean flag = true;
BufferedReader bufferedReader = null;
BufferedWriter bufferedWriter = null;
StringBuffer temp = new StringBuffer();
for (String one : arrayres) {
temp.append(one);
temp.append("\n");
}
int x = temp.lastIndexOf("\n");
temp.replace(x, temp.length(), "");
String res = temp.toString();
try {
File distFile = new File(filePath); //´´½¨Îļþ
if (!distFile.getParentFile().exists()) //Åжϸ¸Â·¾¶ÊÇÎļþ¼ÐÊÇ·ñ´æÔÚ
distFile.getParentFile().mkdirs(); //¿ÉÒÔÔÚ²»´æÔÚµÄĿ¼Öд´½¨Îļþ¼Ð
bufferedReader = new BufferedReader(
new StringReader(res)); //½«Ô×Ö·û´®¶ÁÈ뻺³å
bufferedWriter = new BufferedWriter(
new FileWriter(distFile)); //½«ÎļþдÈ뻺³å
char buf[] = new char[1024]; // ×Ö·û»º³åÇø
int len;
while ((len = bufferedReader.read(buf)) != -1) { //whileÑ»·
bufferedWriter.write(buf, 0, len); //½«×Ö·û´®Ð´ÈëÎļþ
}
bufferedWriter.flush(); //Ë¢ÐÂдÈëÁ÷µÄ»º³å
bufferedReader.close(); //¹Ø±Õ¶Á³öÁ÷
bufferedWriter.close(); //¹Ø±ÕдÈëÁ÷
} catch (IOException e) { //²¶»ñÒì³£
e.printStackTrace();
flag = false;
return flag;
} finally { //finally·½·¨×ܱ»Ö´ÐÐ
if (bufferedReader != null) { //Åж϶Á³öÁ÷ÊÇ·ñΪ¿Õ
try {
bufferedReader.close(); //È·±£¶Á³öÁ÷¹Ø±Õ
} catch (IOException e) {
e.printStackTrace();
}
}
}
return flag; //·µ»Ø²¼¶ûÀàÐÍ
}
void ReadAndCombFile (String filename) {
String[] FileDivideToManyLines = readFileByLines (filename);
// »ñÈ¡ÎļþµÄºó׺Ãû
int FileSuffixLoc = filename.lastIndexOf(".");
String FileSuffix = filename.substring(FileSuffixLoc, filename.length());
ArrayList<String> FileCombed = new ArrayList <String> (); // ´¢´æ¼ÓÈëºÏÊÊÇ°Ãæ¿ÕÐеÄеÄÒ»ÐÐ×Ö·û
int RowNumber = 1; // ¼Ç¼ÏÖÔÚ´¦ÀíµÚ¼¸ÐеĴúÂ룬ʹÓÃÕâ¸öÐÐÊýÌáÐÑ¿ª·¢ÕßÄÄÀï³ö´íÁË
for (String oneline : FileDivideToManyLines) {
String newLine = FileInManyLines (oneline, RowNumber, FileSuffix);
FileCombed.add(newLine);
RowNumber = RowNumber + 1;
}
String[] FileCombInStr = new String[FileCombed.size()];
for (int count = 0; count < FileCombed.size(); count ++) {FileCombInStr [count] = FileCombed.get(count);}
stringArrayToFile (FileCombInStr, filename);
if (HaveUnCleanRow) {JOptionPane.showMessageDialog(null, "Óв»¹æÕûµÄ´úÂ룬Çë¸ÄÕý¡£");}
}
public static void main(String[] args) {
Tidy TideFiles = new Tidy();
}
}
//----------
/*
Modified: 2012-3-1
it can format java codes so as to get the correct indent spaces.
*/
import java.io.IOException;//ÒýÈëÀà
import java.io.*;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.io.StringWriter;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.InputStream;
import java.io.Reader;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import java.awt.Graphics;
import java.awt.Color;
import javax.swing.JFileChooser;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
public class Tidy extends JFrame {
JButton SelectFilebtn, OKbtn;
JTextField FileNameField;
String TabBlank = " "; // ÿһ´ÎtabµÄ¿Õ¸ñ´óС£¬ÕâÀïΪĬÈϵÄËĸö¿Õ¸ñ
int HowManyTab = 0;
boolean HaveUnCleanRow = false; // ¼Ç¼ÓÐûÓбàд²»¹æÕûµÄ³ÌÐò´úÂ룬Èç¹ûÓе¯³ö¶Ô»°¿òÇëÓû§¸ÄÕýÔٹرտØÖÆÌ¨£¬Èç¹ûûÓУ¬²»ÏÔʾ¶Ô»°¿ò¡£
boolean ForWhileIfBlock = false; // ±êÖ¾ÕâÒ»ÐÐÊÇ·ñfor, while or if ¿ªÍ·µ«È´Ã»ÓÐ{}·ûºÅ£¬Õâ˵Ã÷Õâ¸ö¿éÖ»ÓÐÒ»ÐС£
public Tidy () {
this.setTitle( "ÎļþÕûÀíÆ÷");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.WEST; //É趨LayoutµÄλÖÃ
gbc.insets = new Insets(2,2,2,2); //É趨Óë±ß½çµÄ¾àÀë(ÉÏ,×ó,ÏÂ,ÓÒ)
SelectFilebtn = new JButton("Ñ¡ÔñÎļþ");
SelectFilebtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_SelectFilebtn_actionPerformed(e);
}
});
FileNameField = new JTextField("",40);
gbc.gridy=1;
gbc.gridx=0;
this.add(SelectFilebtn, gbc);
gbc.gridx=1;
this.add(FileNameField, gbc);
//--------------
OKbtn = new JButton("OK");
OKbtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String FileName = FileNameField.getText();
d
}
});
gbc.gridy=2;
gbc.gridx=0;
this.add(OKbtn, gbc);
//---------------------
this.pack();
this.setVisible(true);
}
protected void do_SelectFilebtn_actionPerformed (ActionEvent e) {
JFileChooser chooser = new JFileChooser();// ´´½¨ÎļþÑ¡ÔñÆ÷
int option = chooser.showOpenDialog(this);// ÏÔʾÎļþ´ò¿ª¶Ô»°¿ò
if (option == JFileChooser.APPROVE_OPTION) {// ÅжÏÓû§ÊÇ·ñÑ¡¶¨Îļþ
File file = chooser.getSelectedFile();// »ñÈ¡Óû§Ñ¡ÔñÎļþ
FileNameField.setText(file.getAbsolutePath());// °ÑÑ¡ÔñµÄÎļþ·¾¶ÏÔʾÔÚÎı¾¿òÖÐ
}
}
protected void d
if (!ThisFile.equals("")) {
HowManyTab = 0;
ReadAndCombFile(ThisFile); // ÎļþÃû²»ÄÜΪ¿Õ
}
}
// ¸ù¾Ý{ºÍ}µÄ¸öÊý¾ö¶¨Ã¿Ò»ÐÐÇ°ÃæÐèÒªÌí¼Ó¶àÉÙ¸ötab¿Õ¸ñ
String FileInManyLines (String oneline, int CombRow, String Suffix) {
String PreffixStr; // ÕâÊÇÿһÐпªÊ¼µÄ¿Õ¸ñ£¬ËüÊÇÓÃÀ´·½±ãÔĶÁµÄ
String TrimIt = oneline.trim();
String newoneline = "";
int Diff = 0;
// Java³ÌÐò
if (Suffix.equals(".java")) {
int Conutleft = strFind(TrimIt, "{", 0);
int ConutRight = strFind(TrimIt, "}", 0);
Diff = Conutleft - ConutRight;
// Èç¹ûÇ°ÃæÒ»ÐÐÖ»ÓÐÒ»¸öfor, while or ifµ«Ã»ÓÐ{}£¬ËùÒÔÏÂÃæÒ»ÐоÍËõ½øÁË
if ((Conutleft == 0) && (ConutRight == 0) && ForWhileIfBlock)
Diff = 50;
// for, while or if ¿ªÍ·£¬µ«ÊÇȴûÓÐʹÓÃ{}£¬ËµÃ÷Õâ¸ö¿éÖ»ÓÐÒ»ÐС£
if ((Conutleft == 0) && (ConutRight == 0) && ((TrimIt.startsWith("for")) || (TrimIt.startsWith("while")) || (TrimIt.startsWith("if")) || (TrimIt.startsWith("else")) || (TrimIt.startsWith("else if")))) {
ForWhileIfBlock = true;
Diff= 100;
}
switch (Diff) {
case 1 : {
PreffixStr = ManyTabStr (HowManyTab, TabBlank);
HowManyTab = HowManyTab + 1;
newoneline = PreffixStr + TrimIt; // °Ñǰ׺¿Õ¸ñÌí¼Óµ½ÕâÒ»ÐÐÇ°Ãæ
break;
}
case -1 : {
HowManyTab = HowManyTab - 1;
PreffixStr = ManyTabStr (HowManyTab, TabBlank);
newoneline = PreffixStr + TrimIt; // °Ñǰ׺¿Õ¸ñÌí¼Óµ½ÕâÒ»ÐÐÇ°Ãæ
break;
}
case 0 : {
PreffixStr = ManyTabStr (HowManyTab, TabBlank);
newoneline = PreffixStr + TrimIt; // °Ñǰ׺¿Õ¸ñÌí¼Óµ½ÕâÒ»ÐÐÇ°Ãæ
break;
}
case 50 :{
PreffixStr = ManyTabStr (HowManyTab, TabBlank);
newoneline = PreffixStr + TrimIt; // °Ñǰ׺¿Õ¸ñÌí¼Óµ½ÕâÒ»ÐÐÇ°Ãæ
HowManyTab = HowManyTab - 1;
ForWhileIfBlock = false;
break;
}
case 100 : {
PreffixStr = ManyTabStr (HowManyTab, TabBlank);
newoneline = PreffixStr + TrimIt; // °Ñǰ׺¿Õ¸ñÌí¼Óµ½ÕâÒ»ÐÐÇ°Ãæ
HowManyTab = HowManyTab + 1;
break;
}
default: {
PreffixStr = ManyTabStr (HowManyTab, TabBlank);
newoneline = PreffixStr + TrimIt; // °Ñǰ׺¿Õ¸ñÌí¼Óµ½ÕâÒ»ÐÐÇ°Ãæ
System.out.println("µÚ"+CombRow+"ÐÐ"+"±àд²»¹æÕû£¬Çë¸ÄÕý!");
HaveUnCleanRow = true; // ³ÌÐò×îºóµ¯³ö¶Ô»°¿òÌáÐÑÓû§Õâ¸ö³ÌÐòÓбàд²»¹æÕûµÄ´úÂë¡£
}
}
} else if (Suffix.equals(".f90") || Suffix.equals(".f95")) { // Fortran³ÌÐò
String LowCaseTrimIt = TrimIt.toLowerCase();
if (LowCaseTrimIt.startsWith("program") || LowCaseTrimIt.startsWith("module") || LowCaseTrimIt.startsWith("subroutine") || ((strFind(LowCaseTrimIt, "function", 0) == 1)) || LowCaseTrimIt.startsWith("do ") || (LowCaseTrimIt.startsWith("if") && (LowCaseTrimIt.endsWith("then"))) || LowCaseTrimIt.startsWith("select") || LowCaseTrimIt.startsWith("case")) {
Diff = 1;
}
else if (LowCaseTrimIt.startsWith("end ") || LowCaseTrimIt.startsWith("enddo") || LowCaseTrimIt.startsWith("endif")) {
Diff = 2;
}
else if (LowCaseTrimIt.startsWith("else")) {
Diff = 3;
}
else
{Diff = 100;}
switch (Diff) {
case 1 : {
PreffixStr = ManyTabStr (HowManyTab, TabBlank);
HowManyTab = HowManyTab + 1;
newoneline = PreffixStr + TrimIt; // °Ñǰ׺¿Õ¸ñÌí¼Óµ½ÕâÒ»ÐÐÇ°Ãæ
break;
}
case 2 : {
HowManyTab = HowManyTab - 1;
PreffixStr = ManyTabStr (HowManyTab, TabBlank);
newoneline = PreffixStr + TrimIt; // °Ñǰ׺¿Õ¸ñÌí¼Óµ½ÕâÒ»ÐÐÇ°Ãæ
break;
}
case 3 : {
HowManyTab = HowManyTab - 1;
PreffixStr = ManyTabStr (HowManyTab, TabBlank);
newoneline = PreffixStr + TrimIt; // °Ñǰ׺¿Õ¸ñÌí¼Óµ½ÕâÒ»ÐÐÇ°Ãæ
HowManyTab = HowManyTab + 1;
break;
}
case 100 : {
PreffixStr = ManyTabStr (HowManyTab, TabBlank);
newoneline = PreffixStr + TrimIt; // °Ñǰ׺¿Õ¸ñÌí¼Óµ½ÕâÒ»ÐÐÇ°Ãæ
break;
}
}
} else {// ÆäËû¸ñʽµÄÎļþ
newoneline = oneline;
}
return newoneline;
}
// Éú³ÉÒ»¸ön¸ötab¿Õ¸ñµÄ¿Õ°××Ö·û´®
String ManyTabStr (int howmany, String TabBlank) {
String Str = "";
for (int i = 0; i < howmany; i++)
Str = Str + TabBlank;
return Str;
}
// ·½·¨strFindÓÃÓÚʵÏÖ×Ö·û´®²éÕÒ£¬·µ»ØÆ¥ÅäµÄ´ÎÊý
public int strFind(String s1, String s2, int pos) {
// ±äÁ¿iºÍj·Ö±ð±íʾÖ÷´®ºÍģʽ´®Öе±Ç°×Ö·û´®µÄλÖã¬k±íʾƥÅä´ÎÊý
int i, j, k = 0;
// pos´ú±íÖ÷´®ÖпªÊ¼±È½ÏµÄλÖÃ
// i=pos;
i = 0;// Èç¹û°Ñi=pos¸Ä³É´Ë¾ä½«²»´ÓÊó±êλÖÿªÊ¼ÕÒ£¬¶øÊÇÖ±½Ó´Ó×Ö·û´®Í·¿ªÊ¼ÕÒ£¬i¾ö¶¨×Å¿ªÈç²éÕÒµÄλÖÃ
j = 0;
while (i < s1.length() && j < s2.length()) {
if (s1.charAt(i) == s2.charAt(j)) {
++i;
++j;
if (j == s2.length()) {
// j=s2.length()±íʾ×Ö·û´®Æ¥Åä³É¹¦£¬Æ¥Åä³É¹¦´ÎÊý¼Ó1
k = k + 1;
// ½«Ö¸Ê¾Ö÷´®ºÍģʽÖе±Ç°×Ö·ûµÄ±äÁ¿iºÍj½øÐлØÍË
i = i - j + 1;
j = 0;
}
else {
i = i - j + 1;
j = 0;
}
}
i++;
}
return k;// ΪʲôÕâ¸öwhileÑ»·Ã»ÓÐÒ»¸öÑ»·¿ØÖÆÆ÷ÄØ£¬ÎÒ»¹Ã»ÓÐÀí½âËüµÄ½á¹¹£¿
}
//ÒÔÐÐΪµ¥Î»¶ÁÈ¡Îļþ
String[] readFileByLines (String fileName){
File file = new File(fileName);
ArrayList<String> alllinks = new ArrayList<String>();
BufferedReader reader = null;//´´½¨»º´æ¶ÁÈ¡
try {
reader = new BufferedReader(new FileReader(file));//½«Îļþ·ÅÔÚ»º´æ¶ÁÈ¡ÖÐ
String tempString = null;
//Ò»´Î¶ÁÈëÒ»ÐУ¬Ö±µ½¶ÁÈënullΪÎļþ½áÊø
while ((tempString = reader.readLine()) != null){
alllinks.add(tempString);
}
reader.close();
} catch (IOException e) {//²¶»ñÒì³£
e.printStackTrace();
} finally {//ÄÚÈÝ×ÜÖ´ÐÐ
if (reader != null) {
try {
reader.close();//¹Ø±Õ»º´æ¶ÁÈ¡
} catch (IOException e1) {
}
}
}
String[] links = new String[alllinks.size()];
for (int count = 0; count < alllinks.size(); count++) {links[count] = alllinks.get(count);}
return links;
}
// °Ñ×Ö·û´®Êý×éдÈëÎļþ, ¼´°´ÐÐдÈëÎļþ
public boolean stringArrayToFile(String[] arrayres, String filePath) {
boolean flag = true;
BufferedReader bufferedReader = null;
BufferedWriter bufferedWriter = null;
StringBuffer temp = new StringBuffer();
for (String one : arrayres) {
temp.append(one);
temp.append("\n");
}
int x = temp.lastIndexOf("\n");
temp.replace(x, temp.length(), "");
String res = temp.toString();
try {
File distFile = new File(filePath); //´´½¨Îļþ
if (!distFile.getParentFile().exists()) //Åжϸ¸Â·¾¶ÊÇÎļþ¼ÐÊÇ·ñ´æÔÚ
distFile.getParentFile().mkdirs(); //¿ÉÒÔÔÚ²»´æÔÚµÄĿ¼Öд´½¨Îļþ¼Ð
bufferedReader = new BufferedReader(
new StringReader(res)); //½«Ô×Ö·û´®¶ÁÈ뻺³å
bufferedWriter = new BufferedWriter(
new FileWriter(distFile)); //½«ÎļþдÈ뻺³å
char buf[] = new char[1024]; // ×Ö·û»º³åÇø
int len;
while ((len = bufferedReader.read(buf)) != -1) { //whileÑ»·
bufferedWriter.write(buf, 0, len); //½«×Ö·û´®Ð´ÈëÎļþ
}
bufferedWriter.flush(); //Ë¢ÐÂдÈëÁ÷µÄ»º³å
bufferedReader.close(); //¹Ø±Õ¶Á³öÁ÷
bufferedWriter.close(); //¹Ø±ÕдÈëÁ÷
} catch (IOException e) { //²¶»ñÒì³£
e.printStackTrace();
flag = false;
return flag;
} finally { //finally·½·¨×ܱ»Ö´ÐÐ
if (bufferedReader != null) { //Åж϶Á³öÁ÷ÊÇ·ñΪ¿Õ
try {
bufferedReader.close(); //È·±£¶Á³öÁ÷¹Ø±Õ
} catch (IOException e) {
e.printStackTrace();
}
}
}
return flag; //·µ»Ø²¼¶ûÀàÐÍ
}
void ReadAndCombFile (String filename) {
String[] FileDivideToManyLines = readFileByLines (filename);
// »ñÈ¡ÎļþµÄºó׺Ãû
int FileSuffixLoc = filename.lastIndexOf(".");
String FileSuffix = filename.substring(FileSuffixLoc, filename.length());
ArrayList<String> FileCombed = new ArrayList <String> (); // ´¢´æ¼ÓÈëºÏÊÊÇ°Ãæ¿ÕÐеÄеÄÒ»ÐÐ×Ö·û
int RowNumber = 1; // ¼Ç¼ÏÖÔÚ´¦ÀíµÚ¼¸ÐеĴúÂ룬ʹÓÃÕâ¸öÐÐÊýÌáÐÑ¿ª·¢ÕßÄÄÀï³ö´íÁË
for (String oneline : FileDivideToManyLines) {
String newLine = FileInManyLines (oneline, RowNumber, FileSuffix);
FileCombed.add(newLine);
RowNumber = RowNumber + 1;
}
String[] FileCombInStr = new String[FileCombed.size()];
for (int count = 0; count < FileCombed.size(); count ++) {FileCombInStr [count] = FileCombed.get(count);}
stringArrayToFile (FileCombInStr, filename);
if (HaveUnCleanRow) {JOptionPane.showMessageDialog(null, "Óв»¹æÕûµÄ´úÂ룬Çë¸ÄÕý¡£");}
}
public static void main(String[] args) {
Tidy TideFiles = new Tidy();
}
}