Java для начинающих. Урок 36: Чтение из файла.
Вставка
- Опубліковано 31 бер 2017
- МОЙ НОВЫЙ КУРС: • Мой курс "Продвинутая ...
ПРАКТИКА НА JAVA: java-marathon.tilda.ws
На этом уроке будем читать данные из файла с помощью класса Scanner.
Реклама и сотрудничество: alishev.neil@gmail.com
Регистрируйтесь на курс "Продвинутая Java": ua-cam.com/video/rRe1vT0SDD8/v-deo.html
Практикуйтесь в написании Java кода: java-marathon.tilda.ws
Добрый день! Нигде не могу найти инфу, считываю из файла построчно, максимум 10 050 строк... Так и должно быть??? Если строк больше скажем в два раза, нужно записывать в переменные ограничено и добавлять? Сталкивались с такой проблемой???
можеш помочь я пишу код pyhton с телефона ну я самоучка и мне достался фаил написанный на java я его открываю но там набор букв если меняю кодировку то меняется либо набор букв либо появляются какието значки например ромбы а в них вопросительные знаки как сделать чтоб была нормальная кодировка java если что я пищу код через ES проводник
@@snowbombsquad_tm6071 знаешь, программирование на телефоне, очень сомнительная вещь
Важный совет ребятам у которых win10x64.
separator работает.
Вам при вводе нужно начинать с диска и заканчивать названием.txt
Вот так:
separator + "C:" +separator + "Users" +separator +"Дмитрий" + separator +"Desktop" + separator + "test.txt"
В любых других случаях путь к файлу теряется
Спасибо!!!!
Всё равно не помогает -- ошибка: java: illegal unicode escape
Спасибо! У меня win11x64, помогло😁
Можно и без диска
Спасибо большое
Отличное объяснение
"Поток это такая сущность у которой есть вход и есть выход. На вход мы подаем что-то и это что-то оказывается на выходе"
сразу понятно стало
На входе файл на диске, а на выходе данные, которые выдает Scaner. На входе наши данные (FileOutputStream) а на выходе файл на диске.
Так приятно когда с первого раза понимаешь, у других вообще не понятно, спасибо спасибоооо)
как как как вы это делаете? это самые понятные уроки Java на русском, и все же чтоб полностью понять я пересматриваю раза 3))))))))))
Новичок с первого раза не усвоит данный урок, это не реально..... Нужно несколько раз пересмотреть видео + несколько часов практики! Тогда будет толк!
Не перестаю восхищаться проделанной работой и качеством этой работы! Спасибо вам огромное!
Для виндоус 10: Шифт+правая кнопка мыши по файлу --> скопировать путь(path)
спасибо чел)
Гдето после 30-го урока стало сложнее, но если несколько раз пересмотреть, самому несколько раз попробовать, постараться вьехать, то понимание приходит. Огромное спасибо, дойду этот курс и куплю продвинутую, ибо материал очень хорош, нужно только время и усидчевость.
"но если несколько раз пересмотреть, самому несколько раз попробовать, постараться вьехать", поразмышлять, жениться, завести детей, развестись, состариться, лежать на смертном одре, "то понимание приходит".
прост ради прикола)
согласен, порой такое показывает - волосы дыбом. Особенно сложно далось где List...new Array
какие то темы легко, гдето средне, гдето за им все набиваю сам. Никто не обещал что будет легко.
Так же.❤
У кого не заработал принт файла - попробуйте добавить расширение .txt в указаном вами пути
гений этой игры. спасибо. сидел минут 40 думал че не так. с расширением была мысль но не до конца ее реализовал. причем меня отправляла в какой то конструктор с input stream get channel etc. видимо в его версии джавы или на маке такое не надо делать.
герой
Дай Бог здоровья...
Ура, получилось!)
@@akvars4856 Блин, красавчик! помогло
Спасибо, сколько всего пересмотрел...
только здесь всё понятно, а главное просто шок, как ПРОСТО!!!
Ещё раз спасибо!!!
Как круто все разжевано!
Не сказать, что возникают сильные проблемы в других источниках информации, но здесь все в голову легло намного легче и с первого раза.
Спасибо!
Очень качественный материал. Спасибо.
Вы лучший! Доступно и коротко!
Моя благодарность за ваш труд
Спасибо тебе за уроки добрый человек! Доходчиво, кратко, талантливо. Не останавливайся :)))
Спасибо за вашу работу. Оч. здорово объясняете. И просто излагаете тонну информации.
Классно, спокойно, напоминаешь soraxa`a. Продолжай в том же духе!
Спасибо за продолжение курса. Вы один из лучших преподавателей.
Пожалуйста!
Отличное объяснение, одно удовольствие смотреть.
Спасибо вам огромное!
Благодарю за урок! Ждём следующий с нетерпением! )
спасибо за урок!!!!
Самый топовый урок который я видел по этой теме
Огромное спасибо!
Супер объяснил , все очень доступно и понятно. Спасибо тебе!)
спасибо, просто и понятно
отличный канал. должно быть больше просмотров)
Разобрался, надо было расширение к фалу дописать test.txt
привет друг я так тоже пробайу не палучайется
Спасибо! Да, для винды надо дописывать "...\\test.txt"
Thanks
String path = separator+ "C:Users" +separator+"Desktop" +separator+ "text";
а что не так?создал файл текст на рабочем
C:Users\Desktop\text.txt (Системе не удается найти указанный путь) - вот такая ошибка вышла
@@bereal6235 Если для кого-то тоже актуален вопрос: нужно каждую косую черту заменить на две косых черты
Вы лучший! Все очень доступно и прозрачно! Досмотрю видео для начинающих и обязательно куплю курс для продвинутых! Спасибо Вам!
Очень круто, никакой воды. Всё лаконично, просто и понятно, продолжай пжлст)
спасибо огромное, помогли
Замучился вначе внимать,потом разбил видео на несколько файлов,котоые параллельно делал в Intellij IDEA.Попрактиковался и все стало ясно.Все занятия ваши-это Top class.Объемно,подробно,понятно.10/10.Спасибо!
Ничосе как ты классно объясняешь
В маке, если нужен путь, можно без терминала, в файндере открыть папку, где лежит файл, зажать Option (Alt) и внизу высветится путь, нажать правый клик и выбрать скопировать путь)
ОГРОМНОЕ спасибо
Пишу для тех, кто раскладывает, как и я уроки автора по пакетам. Если Вы создали файл "test" в самом пакете, IDE не увидит его. И будет выдавать "FileNotFoundException". Дело в том, что, как и сказал автор видео - "нужно поместить этот файл в корень Вашего проекта". Тогда IDE будет его видеть, без указания конкретного пути к этому файлу. Иначе, если это Вам не подходит, и Вы хотите, чтобы файл лежал в том же пакете, что и главный файл .java, то указывайте pathname конкретно до этого файла с указанием имени и расширения самого файла, как сделано у автора в первой половине видео.
Спасибо! Помог!
Благодарю, реально помог
Спасибо!
Отличная подача материала. Единственное уточнение: когда что-то делаем из другого места, то наверное стоит немного изменить данные, например, добавить на одно значение больше, так как непонятно считываются ли они еще из старого места или уже из нового.
В виндоус путь будет выглять примерно так "D:\\Java\\MyGame\\src\\Learning\\ReadFromFiles\\TextFile" . Если файл расположен внутри какого то пакета, то хз как его вызвать кратко. \\Learning\\ReadFromFiles\\TextFile в частности не катит. Просто имя файла = путь D:\Java\MyGame\src\TextFile, что тоже неверно, т.к. пакет надо указать.
Спасибо
Хотелось бы видеть больше практики
100500 спасибо. !!!
Windiws 10 64. Долго возился с путем к файлу, в итоге работают 2 метода:
1. String path = "C:" +separator+ "Users" +separator+ "ВАШЕ ИМЯ ПОЛЬЗОВАТЕЛЯ" +separator+ "Desktop" +separator+ "test.txt";
2. String path = "C:\\Users\\ВАШЕ ИМЯ ПОЛЬЗОВАТЕЛЯ\\Desktop\\test.txt";
В остальных случаях выдает ошибку в консоли (Не найдем путь к файлу)
Спасибо Егору! все получилось :-))) И с сепараторами сделал и без них(с двумя слэшами).
Спасибо
Огромное спасибо alishev.
Решил усложнить задачу сделать через BufferedReader. (часто им пользуюсь).
Получился красивый код)
public static void main(String[] args) throws IOException {
try {
File file = new File("C:\\Users\\Dmitry\\Desktop\\Test.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
}
catch (FileNotFoundException e) {
System.out.println("File not found");
}
}
Во втором случае со Scanner можно было воспользоваться методами next(), nextInt() и т.д. вместо nextLine();
11:48 - Наиль делит на 0 и хитро ухмыляется ;)
Спасибо! Будьте добры снять подробный урок про коллекции и исключения. За ранее благодарю!
Некоторые думают что Джава сложный язык, хотя по большей части это зависит от подачи. Всё понятно и просто
понять подачу или понять материал это одно
другое дело напрактиковаться так, чтобы ты быстро научиться применять эти знания, а это только набивая руку на задачах
Спасибо за урок + я в эклипсе работаю ( потому что мне так же нравится андроид приложения на нём создавать, потомок джавы ...мне было как - то неприятно работать в андроид студио, установил через 15 минут удалил). Лучше не вырезать в видео демо-код , а закоментить.
Подскажите, а подключение базы данных тоже происходит через прикрепление файла , например, .mySQL?
Или как-то иначе?
Если через файл, то как считывать информацию , что бы выводить отсортированные данные по айди?
Сразу скажу, возможно это очень глупые вопросы, но я как начинающий, пытаюсь разобраться)
Показал бы как перебрать строки) Это фишка явы такая
есть каналы которые намного популярнее, чем твой, но я понял, что это далеко не аргумент, ты намного лучше объясняешь. Спасибо
Добрый день. Скажите пожалуйста на сколько сейчас актуально испольовать классы File и Scanner для работы с файлами, и почему бы вместо них не использовать FileReader?
Добрый день. Спасибо за уроки. Есть вопрос. Если в файле к примеру год и доход (год типа int, доход типа long). Как найти самый доходный год? Там будет двойной массив, в одной ячейке год, во второй доход. Как перенести из файла в такой массив данные? Сначала в Arraylist строку, потом парсить лонг из этой строки?
Для Windows путь указал так и работает, хотя можно указать диск, тоже работает String path = separator + "Users" + separator + "VPC" + separator + "Desktop" +separator + "test.txt";
Пост был написан, до того, как в конце видео был показан более простой метод чтения файла )
Урока до 30 автор был в адеквате, что то объяснял. Сейчас же галопом по европам, а это я расскажу в след уроке, а это потом, а ну нет давайте так. Ты уж если взялся, как то структурируй, чтобы уроки хотя бы по наростающей шли, были как то взаимосвязаны. Сейчас впечатление, о блин вспомнил, есть еще вот такое. Давайка блин покажу.
Он вплетает в код новые вещи, которые никак не объясняет. Шикарное обучение. Так и на всех следующих уроках?
@@TayProlay Согласен, сейчас смотрю курс Трегулова Заура. Офигенно пока что идет. Если недавно начали изучать посмотрите, там правда уроки по часу, но там парень реально до мелочи объясняет.
@@user-lc8gh9ft4b Я гляну. Благодарю за наводку)
поток это подпроцесс процесса т.е у него более абстрактное понятие, а это канал чтения и записи
Сделайте пожалуйста подобный урок по записи в файл.
Ок.
Как читать/записывать блоки данных на java?
Благодарю за интересный урок! Да, на винде надо в путь дописывать в конце пути ...+separator+"file.txt";, иначе пишет отказано в доступе.
Все гениальное просто, ну вот нужно было пролистать комментарии во второй раз , чтобы сразу попалось твое!!!!!!!!!!)
String path = separator+ "C:Users" +separator+"Desktop" +separator+ "text";
а что не так?создал файл текст на рабочем
C:Users\Desktop\text.txt (Системе не удается найти указанный путь) - вот такая ошибка вышла
separator+ "C:Users" +separator+"Desktop" +separator+ "test.txt" так верно?неполучается почему то
спасибо большое, помогло👍
У кого винда:
public class ReadingFromFile {
public static void main(String[] args) throws FileNotFoundException {
String separator = File.separator;
String path = separator + "C:" +separator + "Users" +separator +"Diablo" + separator +"Desktop" + separator + "test.txt";
File file = new File(path);
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()){
System.out.println(scanner.nextLine());
}
Спасибо!
Через valueOf можно было сделать тоже самое??Преобразовать строку в инт?
Если не заработало на винде10 даже с просто расширением читаемого файла, попробуйте диск указать separator + "C:" + ...
Здравствуйте
А как сделать чтобы сканнер считывал русский текст?
платформа Eclipse
Так легче import java.text.Format;
import java.util.*;
import java.io.*;
public class FileReading {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(new FileInputStream("D:\\Java\\Reading.txt"));
while (scanner.hasNextLine()) {
System.out.println(scanner.nextLine());
}
}
}
читать файл сканнером это очень не рекомендую. есть множество проблем с этим классом
@@kartezist ну так напиши чем рекомендуешь, ибо смысл твоего коммента
@@vladimirplohotniuk5214 я напишу! сделал как в уроке, и сканер читает только 2 и 3 строку, забыв о первой. но могу считать первую до метода while, указав просто строку System.out.println(scan.nextLine());
но это же бред!
в итоге код на считывание 3х строк получился такой...
String s = File.separator;
String path = "E:" +s+ "java" +s+ "test.txt";
File file = new File(path);
Scanner scan = new Scanner(file);
*System.out.println(scan.nextLine());*
while(scan.hasNextLine()) {
System.out.println(scan.nextLine());
}
я не ошибся в ТХТ файле,
никаких пустых строк нет, все как в уроке
---------------------------------------
first line
second line
third line
---------------------------------------
А что делать если у меня не одна строка чисел, а несколько?
цикл while становится бесконечным.......
И выводится только первая строка, бесконечно кол-во раз
Не понял тему на JavaRush - иду в этот плейлист, а потом уже в книге закрепляюсь.👍
Большое спасибо!
Какая книга ?)
@@user-ip9bg4wh9p Полное руководство от Шилдта, а так же Эффективное программирование Блоха, но к текущему дню список книг прибавился Java concurrency in practice, Лямбда в Java 8, Stream API, etc. Плейлисты не только у Наиля, а так же пара курсов на Udemy (Алгоритмы, Spring, SQL...)
В общем успехов в обучении, если я правильно понял 😉
Спасибо за курс! Вопрос, путь например - С:\Папка\файл, чем "сепаратить" символ ":" ? (Windows)
Нет.
separator+"C:"+separator+
Не сработал parseInt. Идея ругалась при компиляции. Оказалось, что текст пересохранил не в ANSI, а в Unicode и в начало файла добавился BOM. Мало ли у кого такое же 😂
Для того что бы использовать метод класса, я так понимаю не обязательно создавать объект класса (например в уроке используется метод toString класса Arrays, объект класса Arrays, при этом, не создается)? Если это не всегда так, то как понять когда можно использовать методы или обращаться к полям класса не создавая объект класса, а когда нет?
может поздний ответ, но суть как я понимаю в том, что метод toString cтатический, то есть принадлежит классу, и для его вызова не обязательно создавать объект класса
Пример на Windows!!! Когда test фаил был на рабочем столе программа выдавала ошибку три вечера пробовала разные способы, так и не нашла причину почему из диска C выдаёт ошибку😐
Я переместила test файл просто на диск D и указала такой путь
String path = separator + “D:” +separator +”test.txt”;
Все удалось !!!!!😊
Мне всё равно не помогло. Выдает ошибку: java: illegal unicode escape
На винде не мог сделать. Надо было расширение указать еще test.txt. У тебя работало без этого. У меня только так получилось
String path = separator+ "C:Users" +separator+"Desktop" +separator+ "text";
а что не так?создал файл текст на рабочем
C:Users\Desktop\text.txt (Системе не удается найти указанный путь) - вот такая ошибка вышла
Всем привет!!! Вот я и дополз.Запись для потомков.
Что если слова разделены не пробелом а переходом на другую строку ?
Как вариант
String path = System.getProperty("user.home") + "/Desktop/java.txt";
Посоветуй с высоты опыта книги для начинающего (Философия Java и Изучаем Java (Head First Java) уже есть) :) как-то вздумалось в 39 оседлать программирование ( в своё время в универе была тяга да потом забросил) :)))
По моему мнению, философия Java - лучшая книга.
Спасибо :)
Добрый день, есть проблема при повторном считывание файла, первый раз все хорошо, а второй раз подставляет снова название файла:
File 'C:\Users\User\Desktop\TEST\Vacancy.txtVacancy.txt' does not exist
здравствуйте, сейчас пробовала этот код и почему-то не работает. это связано с тем, что что-то устарело?
*кто пытался считать текст на кирилце (русские буквы) из файла и у вас ошибка, вот нашел решение:*
секрет в правильной кодировке, джава предложит 6, все они не подходят!
вот внизу пишу код, у меня все читает без ошибок!
String path = "E:\\java\\test.txt";
File file = new File(path);
Scanner scan = new Scanner(file, "CP1251");
System.out.println(scan.nextLine());
если создать цикл while, как на уроке, то считывает все строки
Пишу на русском
вторая тоже
и третья
привет.
но... дьявол в деталях, первую строку цикл не берет, сразу со второй. Потому первую вывел простой командой, а остальные циклом....пока так.
Если у кого непонятно что в панели Run выводится, файл с текстом должен быть сохраненен, лично у меня он не был сохранен после изменений(поменял 1 2 3 на аналогичные английские слова), поэтому в панели была какая-то ерунда. Проще всего закрыть файл блокнота и сохранить. (скорее всего я один такой ха-ха)
я вот смотрю в 2021. интересно это все еще актуально? и еще такой вопрос можете что-то написать о потоках для соединения и потоках цепных?
конечно актуально, особенно для новичков
Товарищи, помогите! Что не так? В обратной последовательности что ли путь просит?
Что не так с путем? Выдает illegal character: '\u202a'
package javaapplication5;
import java.io.*;
public class JavaApplication5 {
public static void main(String[] args) {
File file = new File ("C:\\Users\\Antonio\\Desktop\\Jopa.txt");
}
}
ошибка illegal escape character при внесении в String path пути к папке. не могу понять почему, все также делаю, копирую. Обратный слэш на винде использую.
надо код добавлять к вопросу
почему у меня в любом случае выкидывает експшин(файл не найден)?где я только не создавал и как я только не прописывал путь
когда прописываете путь к файлу в java 2020.3 находящемуся в 10 винде, то слеш только такой / больше часа корячился. если путь копировать то слеш будет обратный и выдаст ошибку.
спасибо! помогло
Как успехи?
А как мне создать такой файл test?
У меня почему-то так получилось [First, Second, Third], хотя в самом файле (и в коде) запятых нет, всё ровно так же, как у преподавателя: String[] words = line.split(" ");
Спасибо за полезный контент.)
Интересное наблюдение, если в коде указываю "0" , то при выводе в консоль, эти запятые пропадают, но пробелы между словами есть: String[] words = line.split("0"); Если сделать то же самое, но в файле между словами поставить "0", то в консоль опять выводятся слова через запятую и пробел [First, Second, Third]. Какая-то ерунда...
Спасибо за полезный контент.)
О! А если сделать так: String[] words = line.split(", "); т.е. запятая с пробелом (или без пробела ","), тогда вывод получается, как у преподавателя: [First Second Third].
Спасибо за полезный контент.)
String path = separator+ "C:Users" +separator+"Desktop" +separator+ "text";
а что не так?создал файл текст на рабочем
C:Users\Desktop\text.txt (Системе не удается найти указанный путь) - вот такая ошибка вышла
у меня выводит бесконечное "true", вместо содержимого файла (first line, second line ...) - в чем может быть проблема? вин10
public class ScannerFile {
public static void main(String[] args) throws FileNotFoundException {
String separator = File.separator;
String path = "D:"+separator+"Lessons"+separator+"test.txt";
File file = new File(path);
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
System.out.println(scanner.nextLine());
}
scanner.close();
}
а у тебя прописано System.out.println(scanner.hasNextLine()); не тот метод
для виндоуса подругому же у нас еще диск есть
На винде после С: нужно ставить тоже + separator +. Отсюда у вас и ошибка. Ну и в конце не забывайте .txt
СПАСО БОЛЬШОЕ !!!!!
СПАСИБО
У меня также не может Винд10 найти путь к файлу. Что ни делал, и диск С вводил и двоеточие и... помогите, кто победил это?
У меня работает без "redgex:". Просто ставите в "0" .
15:10 - Спасибо! А то я уже пригорюнился... ))) Ошибка вылетала - так и не находила java путь к файлу(у меня win 10x64 сейчас). Всё проверил и ошибка вылезала. Чуток позже к ней вернусь, главное что тему понял. спасибо!
Егор, здравствуйте! Вы смогли победить ошибку пути к файлу? Подскажите, пожалуйста, мне как. Винд тот же 10*64
Mikhail Dichenko День добрый! По итогу лично эту ошибку не исправлял, пошёл дальше. Лишь гуглил. Сейчас уже точно не скажу, но из прочитанного понял, что заковыка в \\ таком вот знаке. Когда пишешь путь на маке, то делаем как преподаватель, а на винде с помощью \\. И ещё начинать путь нужно с диска c,d и тд. Но повторюсь. Это не точно, лишь вычитано с порталов. Сам не проверял. Второй же вариант, когда создаёшь файл в папке проекта, сработал сразу.
@@yegorivanov3006 сделал так: "String path = "C:\\Users\\Михаил\\Documents\\NetBeansProjects\\Lessons7more\\src";" - и пишет отказано в доступе! Хотя папка проекта содержит этот файл txt, черт возьми...
Mikhail Dichenko я под конец недели попробую тоже))) Сейчас на удалёнке. Уже вторая неделя пошла. В первую неделю заказчики посылали далеко, а сейчас работать хотят - заскучали все в самоизоляции))) поэтому как в выходные эту тему подниму, по результату отпишусь ✊
@@yegorivanov3006 Спасибо, Егор, буду ждать
Где вы взяли этот файл, как его создать!!!!?
апд: стримы юзать теперь
А что делать, если мы не знаем количество символов в файле? Использовать arraylist? И насколько правдиво, что сканер хуже чем buffered reader?
да, можно использовать ArrayList.
Scanner работает медленнее
Кто знает почему из файла читает только цифры?? Если пишу слова, даже латиницей -Ошибка!
Вот вроде разобрался. System.out.println((String)line); только так выводит, ПОЧЕМУ? line ведь как стринг обьявлена. WTF!?
отказано в доступе. Что не так?
File file = new File("C:\\Users\\App Store\\Desktop\\test.txt"); Win
почему у меня появляется ошибка Отказано в доступе?