DoIt - бизнес-логика программы - самое интересное )) java программа пример

Коренная тема кода здесь = http://fkn.ktu10.com/?q=node/2256
а рассуждения по решению задачи здесь = http://fkn.ktu10.com/?q=node/2036
------------дальше код------------------

import javax.swing.JOptionPane;
import java.io.File;
//import java.io.FileFilter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException; // для обработки исключений
import java.io.FileNotFoundException;

//import javax.swing.filechooser.FileFilter;
/*данный класс помимо прочего являет ещё собой ПРИМЕР РАБОТЫ С ФАЙЛАМИ В JAVA -
* чтения, записи*/
public class DoIt implements Runnable { // класс - а данном случае отвественен за бизнес-логигу приложения)
public String path;
public String curpath; // путь к конкретному файлу поток которого хотим запустить следующим
public DoIt(String dirpath) /* конструктор - в данном примере
принимает один строковый параметр*/
{

this.path=dirpath;
this.CutFiles(this.path); //запускаем обработчик
}
public void run() // обёртка над updateFile, позволяющая
//запуститься в отдельном потоке
{
this.updateFile( this.curpath); // зупускаем обработчик файла
}

public int CutFiles(String dirpath) // метод-обработчик (главный)
/*из данного метода мы будем вызывать все вспомогательные фукции,
* необходимые для решения поставленной задачи - в каком-то смысле данный
* метод - в рамках арзитекуты приложения - точка входа в бизнес-логику задачи -
* а ранее же мы занимались пользовательским интерфесом - делая программу удобной
* в использовании и придавая ей человеческий вид*/
{
String message = "Запуск обработчика...";
JOptionPane.showMessageDialog(new JFrame(), message, "Dialog",
JOptionPane.ERROR_MESSAGE);

File f = new File(this.path);
MyFileFilter filter = new MyFileFilter();
File[] list = f.listFiles(filter);
for(int i = 0; i<list.length; i++) {
System.out.println(list[i]);
// this.updateFile(list[i].getPath()); // это работало в однопоточном режиме
Runnable r = new MyThread(list[i].getPath()); // создаём класс и передаём в него параметр
new Thread(r).start(); // передаём объект r как параметр создаваемого потоку
// теперь код из run() может работать в отдельном потоке +
// обрабатывать переданные параметры! =)) о как)

}

/* String list2[] = new File(this.path).list();
for(int i = 0; i < list2.length; i++)
System.out.println(list2[i]); */

/* String list[] = new File(".").list();
for(int i = 0; i < list.length; i++)
System.out.println(list[i]);

*/
return 1;
}
// обёртка над функциями(методами ) чтения и записи файлов
// вызывается для каждого обнаруженного в
// указанной пользователем папке .txt файла.
public int updateFile(String path)// не используем в связи с Runnable
{
String data = this.readDataFromFile(path); // читаем

String message = "Данные прочитаны! Будем записывать...";
JOptionPane.showMessageDialog(new JFrame(), message, "Dialog",
JOptionPane.ERROR_MESSAGE);

this.writeDataInFile( path,data); // пишем ограничикая длину строки.

return 1; // всё всегда хорошо =))
}
// запись в файл - путь к файлу+ строка
static public int writeDataInFile(String path,String data1)
{
// раз содержимое мы считали - то можно файл очистить
/*File somefile = new File(path); // открываем по указанному пути

somefile.delete();
File yourNewFile = new File(path);
try {yourNewFile.createNewFile();} // обрабатываем искл. ситуацию при создании файла
catch(Exception e) {System.err.println("Error: " + e.getMessage());} */
try {
FileWriter fstream1 = new FileWriter(path);// конструктор с одним параметром - для перезаписи
BufferedWriter out1 = new BufferedWriter(fstream1); // создаём буферезированный поток
out1.write(""); // очишаем
out1.close(); // закрываем
} catch (Exception e)
{System.err.println("Error in file cleaning: " + e.getMessage());}

char[] data = data1.toCharArray();
try{
// Create file
FileWriter fstream = new FileWriter(path,true);// true - дабы писать в конец, а не перезаписывать

BufferedWriter out = new BufferedWriter(fstream);
int i=0;// счётчик для перебора всех символов предназначенных дял записи
int j=0; // счётчик длины текушей записываемой строки
int len = data.length;
while (i< len) // пока не встретим конец строки
{
if (j<=MyData.maxlength) // опираемся на глобальный параметр.
{
out.write(data[i]);
j++;// нарищиваем счётчик текущей строки
}
else
{
out.write('\n');//переводим строку чтобы соблюсти максимальную длинну
out.write(data[i]);
j=1;// сбрасываем счётчик длины текущей строки
}
System.out.println("writing =: " + data[i]);
i++;// наращиваем счётчик символов

}
// out.write("lya-lya-lya =)))");
//Close the output stream
out.close();
}catch (Exception e){//Catch exception if any
System.err.println("Error in writing: " + e.getMessage()+"=="+e.getLocalizedMessage()+"=="+e.getCause());
}

return 1;
}

// пример работы с файлами java - чтение
static public String readDataFromFile(String path) // используем для чтения данных из файла
{
String result="";

BufferedReader input = null;

// Отлавливаем исключение типа "файл не найден"
try { input = new BufferedReader(new FileReader(path)); }
catch (FileNotFoundException e) {
System.out.println("File \"" + path + "\" not found");
return "" ;
}

try {
String line="";// память дял очередной считываемой строки
while ((line = input.readLine()) != null)
{result +=line;} // добавляем строки в общее хранилище
} catch (IOException e) {
e.printStackTrace();
}

String message = "Данные прочитаны = [ "+result+" ]";
JOptionPane.showMessageDialog(new JFrame(), message, "Dialog",
JOptionPane.ERROR_MESSAGE);

return result;
}
}