JAVA работа с файлами - пример

класс приведённый ниже получает в качестве параметра конструтора путь к директории -открывает в ней все файлы удовлетворяющие <strong><a href="http://fkn.ktu10.com/?q=node/2244">фильтру приведённому здесь</a></strong> и длинна строк в этих файлах ограничивается некоторым значением <em>(производится перенос)</em>.
Вот какой получается пример =
<strong><em>(извиняюсь за отсутсвие форматирования - перенесите код в IDE - и изучите там - так будет удобнее)</em></strong>
import javax.swing.JFrame;
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 { // класс - а данном случае отвественен за бизнес-логигу приложения)
public String path;
public DoIt(String dirpath) /* конструктор - в данном примере
принимает один строковый параметр*/
{

this.path=dirpath;
this.CutFiles(this.path); //запускаем обработчик
}

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()); // отправляем файл на обработку
}

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

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

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

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

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 - чтение
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;
}
}