Как сохранить txt файл в бд spring
Перейти к содержимому

Как сохранить txt файл в бд spring

  • автор:

#4 — Запись и чтение данных из файлов (Java io)

#4 - Запись и чтение данных из файлов (Java io)

Работа с файлами это важная часть многих языков программирования. В уроке мы научимся работать с файлами. Мы изучим добавление и чтение информации из файлов.

Видеоурок

Многие языки программирования предоставляют классы для работы с файлами и директориями проекта. Язык Java обладает множеством классов для записи и чтения данных из файлов.

Работа с файлами

При работе с файлами всегда необходимо помнить две вещи:

  1. Перед началом работы с файлом его необходимо открыть;
  2. После завершения работы с файлом его необходимо закрыть.

Если файл не открыт или же неверно открыт, то вы не можете полноценно работать с его содержимым.

С закрытием все проще, но и коварнее. Если вы не закроете файл, то программа будет работать верно, тем не менее, чем больше будет открытых файлов, тем больше программа будет перегружена и в какой-то момент она просто зависнет или выключиться.

Исключения и файлы

Поскольку не всегда известно будет ли файл в проекте или на компьютере пользователя, то всегда лучше открывать файлы за счёт использования исключений. Выполняйте открытие файлов в блоке try catch и тем самым вы обезопасите себя от любых непредвиденных обстоятельств.

Запись данных в файл

При записи данных в файл его изначально необходимо открыть. Для этого в языке Java используется класс «File»:

File file = new File("fileName.txt");

После открытия файла вы можете записать в него данные за счёт класса «PrintWriter»:

// Указываем файл для записи // В качестве объекта передаем открытый файл на основе класса File PrintWriter pw = new PrintWriter(file); // Помещаем текст внутрь файла pw.println("Working proccess"); 

В конце файл необходимо закрыть:

pw.close();
Чтение данных из файла

Для чтения данных файл необходимо также изначально открыть и в конце закрыть. Чтобы прочесть содержимое файла используется класс BufferedReader :

// Открываем файл для чтения // В качестве объекта передаем открытый файл на основе класса FileReader BufferedReader br = new BufferedReader(file); // Считываем данные while((String line = br.readLine()) != null) < // Выводим каждую отдельную строку в консоль System.out.println(line); >
Весь код будет доступен после подписки на проект!

Как сохранить txt файл в бд spring

Хотя с помощью ранее рассмотренных классов можно записывать текст в файлы, однако они предназначены прежде всего для работы с бинарными потоками данных, и их возможностей для полноценной работы с текстовыми файлами недостаточно. И для этой цели служат совсем другие классы, которые являются наследниками абстрактных классов Reader и Writer .

Запись файлов. Класс FileWriter

Класс FileWriter является производным от класса Writer. Он используется для записи текстовых файлов.

Чтобы создать объект FileWriter, можно использовать один из следующих конструкторов:

FileWriter(File file) FileWriter(File file, boolean append) FileWriter(FileDescriptor fd) FileWriter(String fileName) FileWriter(String fileName, boolean append)

Так, в конструктор передается либо путь к файлу в виде строки, либо объект File, который ссылается на конкретный текстовый файл. Параметр append указывает, должны ли данные дозаписываться в конец файла (если параметр равен true), либо файл должен перезаписываться.

Запишем в файл какой-нибудь текст:

import java.io.*; public class Program < public static void main(String[] args) < try(FileWriter writer = new FileWriter("notes3.txt", false)) < // запись всей строки String text = "Hello Gold!"; writer.write(text); // запись по символам writer.append('\n'); writer.append('E'); writer.flush(); >catch(IOException ex) < System.out.println(ex.getMessage()); >> >

В конструкторе использовался параметр append со значением false — то есть файл будет перезаписываться. Затем с помощью методов, определенных в базовом классе Writer производится запись данных.

Чтение файлов. Класс FileReader

Класс FileReader наследуется от абстрактного класса Reader и предоставляет функциональность для чтения текстовых файлов.

Для создания объекта FileReader мы можем использовать один из его конструкторов:

FileReader(String fileName) FileReader(File file) FileReader(FileDescriptor fd)

А используя методы, определенные в базом классе Reader, произвести чтение файла:

import java.io.*; public class Program < public static void main(String[] args) < try(FileReader reader = new FileReader("notes3.txt")) < // читаем посимвольно int c; while((c=reader.read())!=-1)< System.out.print((char)c); >> catch(IOException ex) < System.out.println(ex.getMessage()); >> >

Также мы можем считывать в промежуточный буфер из массива символов:

import java.io.*; import java.util.Arrays; public class Program < public static void main(String[] args) < try(FileReader reader = new FileReader("notes3.txt")) < char[] buf = new char[256]; int c; while((c = reader.read(buf))>0) < if(c < 256)< buf = Arrays.copyOf(buf, c); >System.out.print(buf); > > catch(IOException ex) < System.out.println(ex.getMessage()); >> >

В данном случае считываем последовательно символы из файла в массив из 256 символов, пока не дойдем до конца файла в этом случае метод read возвратит число -1.

Поскольку считанная порция файла может быть меньше 256 символов (например, в файле всего 73 символа), и если количество считанных данных меньше размера буфера (256), то выполняем копирование массива с помощью метода Arrays.copy. То есть фактически обрезаем массив buf, оставляя в нем только те символы, которые считаны из файла.

Сохранение данных в базе данных и файле txt. Шаг №67

Всем привет. Рассмотрев в прошлой статье использование анимации для интерактивности, сегодня уделим внимание вопросу сохранения данных. А именно проект предполагает запись полученных GET-параметров. Мы рассмотрим два способа, запись в текстовый файл и базу данных.

Итак первый вариант в текстовый файл. Для чего в корне сайта на хостинге создаем txt файл, у нас это data.txt. Мы пока, что вручную заносим данные в адресной строке, данная процедура будет иметь следующий вид http://ap-impulse.com/interface.php?t=-2. Используем: передача данных GET-запросами. Далее информация в виде температуры выводится на интерактивный веб — интерфейс ( http://ap -impulse.ru/interface.php ) и сохраняется в текстовом файле, ниже рисунок результата и код php.

//Создаем переменные ссылающиеся на файл и GET-параметр
$filename = ‘data.txt’;
$somecontent = $_GET[«t»];
//Проверка на наличие файла и доступа до записи.
if (is_writable ($filename)) <
if (!$handle = fopen ($filename, ‘a’)) < //Открытие файла в режиме до записи
echo «I can not open the ($filename)»;
exit; >
if (fwrite ($handle, $somecontent) === FALSE) < // Запись данных в конец файла
echo «I can not to record ($filename)»;
exit; >
echo «Hooray! Recorded ($somecontent) in the ($filename)»; // Вывод данных
fclose ($handle);
> else <
echo «File $filename not access»; >
?>

Результат выполнения кода на рисунке ниже, где мы видим вывод строки Hooray! Recorded (-2) in the data.txt

Скажем так, мы рассмотрели возможность ведения лога. Было бы неплохо записывать информацию в базу данных. Можно писать в базу непосредственно к которой подвязан сам сайт а можно создать еще одну, под web-интерфейс, для экспериментов. На втором варианте я и остановился. Используя основы базы данных, и команды создания идем далее. Базу мы создадим в кабинете управления сайтом. В итоге получим две базы в пользовании. Рис. ниже.

База создана inerf. Далее создаем таблицу. Либо средствами утилиты PhpMyAdmin, где открывается окно с настройками. Но мне кажется проще использовать команды. Итак сделаем такую же таблицу как и в 49-ой статье. Вставляем команды в php. Где для начала соединяемся с MySQL сервером, выбираем базу и далее выполняем запрос по созданию таблицы и необходимых столбцов. Да, информацию для соединения с сервером берем в файле конфигурации wp-config.php , конечно если у Вас движок WordPress. Код ниже.

mysql_connect («host», «пользователь», «пароль») or die (mysql_error ());
mysql_select_db («interf») or die (mysql_error ());
mysql_query («CREATE TABLE Log ( T1 FLOAT (3,1), T2 FLOAT (3,1), TIMELog VARCHAR (5), DATELog VARCHAR (8), PRIMARY KEY (TIMELog, DATELog))») or die (mysql_error ());
mysql_close ();

Ниже результат выполнения кода:

Заходим в СУБД, выбираем БД. Убедившись в положительном результате, данный код можно удалить. Следующий шаг это сохранение Get — параметров в базе.

Ниже код и результат его работы. Вводим в адресной строке вручную GET -параметры http://ap-impulse.com/interface.php?t=-2&t1=8&tm=12.00&td=11.11.16
mysql_connect («host», «пользователь», «пароль») or die (mysql_error ());
mysql_select_db («interf») or die (mysql_error ());
$t = $_GET[«t»];
$t1 = $_GET[«t1»];
$tm = $_GET[«tm»];
$td = $_GET[«td»];
mysql_query («INSERT INTO Log (T1, T2, TIMELog, DATELog) values (‘$t’,’$t1′,’$tm’,’$td’)»);
mysql_close ();

Ну вот в принципе и все. Рассмотрев способы сохранения данных в текстовый файл и базу данных в следующих статьях привяжемся к системному времени на странице веб-интерфейса, рассмотрим способ построения графика №68 (используя Google Charts ), а также построение по данным из базы данных. На этом мы сегодня и остановимся. Всем пока.

Просмотрено 2941 раз.

Запись опубликована автором admin137 в рубрике Web-технологии, База данных и СУБД MySQL с метками GET, MySQL, php. Добавьте в закладки постоянную ссылку.

База данных в текстовом файле

Создаю простое приложение которое должно хранить данные пользователя в текстовом файле (один для всех пользователей), авторизация также должна проходить на основе этого файла. Подскажите пожалуйста как это правильно организовать? Может у кого есть пример такого решения. Библиотеки использовать нельзя, также как и xml и json.

Отслеживать
задан 22 янв 2018 в 12:24
Андрей Оробец Андрей Оробец
3 3 3 бронзовых знака

Реализуйте на коленке csv, в случае если не требуется использование экранируемых символов (т.е. приложение запрещает использование запятых и прочего) это тривиально

22 янв 2018 в 12:28

Та в java даже готовый Properties есть, который что то на вроде ini строит. Даже на коленке не надо ничего писать. mkyong.com/java/java-properties-file-examples

22 янв 2018 в 12:45

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

у меня есть пример но не знаю может быть полезно для вас или нет ! И так! Во первых создайте папку и внутри создайте FILE в формате текст это будет служить для хранилище данных.Нужно создать папку с именем model и внутри создать класс который будет хранить переменние например String name,String surname и.т.д . необходимо чтобы этот класс был implemets на Serializable в этом классе нужно ovveride-ить Getter Setter EqualsAndHashCode Constructor defaultConstructor и в этом классе всё. потом нужно создать папку с именем util внутри создать класс с иминем SerializeUtil и объявлять следующее
public static final String USER-FILE-PATH = «И ЗДЕСТЬ ДАТЬ РЕЛАТИВ ПУТЬ В ЭТОМУ ФАЙЛУ ПРИМЕР -src\mailService\data\users»; И ПОД ЭТОМУ ПИШЕМ СЛЕДУЮЩИЙ ЧТОБЫ ПОТОМ ЗВАТЬ ЭТОТ МЕТОД ЧТОБЫ КИНУТЬ USER А В ФАЙЛ

public static void serializeUser(Map userMap) throws IOException

И ПОД ЭТОМУ КОДУ ПИШЕМ СЛЕДУЮЩИЙ КОТОРЫЙ БУДЕТ ПОКАЗАТЬ ВСЕХ USER ОВ В КОНСОЛЬ потом этот метод можно звать когда хотите увидеть всех user ов но извините я забыл логику который нужно было писать и звать этот метод

public static Map deserializeUser() throws IOException, ClassNotFoundException < ObjectInputStream objectInputStream = new ObjectInputStream( new FileInputStream(USER_FILE_PATH)); return (Map) objectInputStream.readObject(); > 

ТЕПЕРЬ СОЗДАЕМ ПАПКУ С ИМЕНЕМ storage И ВНУТРИ СОЗДАЕМ КЛАСС UserStorage И ВНУТРИ ПИШЕМ СЛЕДУЮЩИЙ КОД ЧТОБЫ КИНУТЬ USER А В ФАЙЛ

private Map users = new HashMap<>(); public void add(User user) < users.put(user.getEmail(), user); try < SerializeUtil.serializeUser(users); >catch (IOException e) < System.out.println(e); >> 

И В ГЛАВНЫЙ КЛАСС КОТОРЫЙ Я НАЗЫВАЛ TEST НУЖНО ЗВАТЬ ЭТИ МЕТОДЫ НАПРИМЕР ЭТОТ МЕТОД ДЛЯ РЕГИСТРАЦИИ

 `private static void register() < System.out.println("Please input name,surname,email,password"); String userDataStr = SCANNER.nextLine(); String[] userData = userDataStr.split(","); User user = new User(); user.setName(userData[0]); user.setSurname(userData[1]); user.setEmail(userData[2]); user.setPassword(userData[3]); USER_STORAGE.add(user); System.out.println("User was successfully added"); >>` 

И когда регистрировали все данные буду падать в файл

ну и скажите от куда у меня такой странный русский язык . я не русский ))))

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *