Netbeans сравнить 2 файла
это хороший способ сравнить текстовые файлы? Что предпочтительнее?
junit-аддоны имеет хорошую поддержку для него:FileAssert
это дает вам исключения, такие как:
вот один простой способ проверки, если файлы ровно так же:
здесь file1 и file2 are File экземпляров, и FileUtils С Apache Commons IO.
редактировать:
Хе-хе, вглядываясь в FileUtils API, есть еще проще:
в качестве бонуса, эта версия работает для всех файлов, а не просто текст.
вот более исчерпывающий список компараторов файлов в различных сторонних Java библиотеки:
по состоянию на 2015 год, я бы AssertJ, элегантная и всеобъемлющая библиотека утверждений. Для файлов вы можете утверждать против другого файла:
или против встроенных строк:
и если в одном из файлов больше строк, вы получите:
Я бы предложил использовать Assert.assertThat и hamcrest matcher и (junit 4.5 или более поздняя версия-возможно, даже 4.4).
Я бы закончил чем-то вроде:
где мой matcher:
- состав и повторное использование
- польза в нормальном коде так же, как тесте
- коллекции
- используется в mock framework(s)
- может использоваться общий предикат функция
- Ну, это довольно очевидно, не так ли? Это более подробно, чем assert или junitx (для этого конкретного случая)
- вам, вероятно, нужно будет включить Hamcrest libs, чтобы получить максимальную выгоду
FileUtils конечно, хороший. Вот еще один простой подход для проверки, если файлы точно так же.
в то время как assertEquals() предоставляет немного больше обратной связи, чем assertTrue (), результат checksumCRC32() является длинным. Так, что не может быть intrisically полезно.
Simpel сравнение содержимого двух файлов с java.НИО.файл API.
или если вы хотите сравнить отдельные строки:
если ожидаемый имеет больше строк, чем фактический, вы потерпите неудачу assertEquals, прежде чем перейти к assertNull позже.
Это моя собственная реализация equalFiles , нет необходимости добавлять библиотеку в проект.
Очень часто я слышу фразы различных людей на тему того, что полноценные IDE — это не нужно, что Vim, Sublime Text и Atom позволяют всё делать, и так далее, и так далее. Только недавно у меня снова возникла беседа на эту тему, и я снова вспомнил о том, что хотел показать людям некоторые трюки современных IDE, которые сильно упрощают жизнь во время работы.
Я люблю эту качественную опенсорсную IDE Netbeans. У меня даже цветовая схема под неё есть своя собственная (не забудьте прочитать описание, если пожелаете её опробовать). На всех видеороликах как раз она и используется в работе, плюс тёмный интерфейс Darkula и свободный шрифт Hack.
Иногда я перехожу в PhpStorm, поработать там и сравнить возможности этих двух IDE. И время от времени прихожу к понимаю, что каждая из них по-своему хороша. PhpStorm имеет множество интересных интеллектуальных возможностей для быстрой разработки ООП кода. А на стороне Netbeans — бесплатность, а также мощный и не сильно перегруженный интерфейс. Это особенно чувствуется после возвращения на него с PhpStorm.
В этой статье я хотел бы показать некоторые прикольные трюки, которые присутствуют в Netbeans и прочих современных IDE, а некоторые из них — только в Netbeans. Очень часто они помогают мне сэкономить массу времени при работе над большими проектами.
Прошу также не возмущаться тех людей, которые используют современные IDE и знают большинство этих трюков. Это не для вас! Дело в том, что есть множество других людей, которые их не знают, и я бы хотел показать им эти возможности на реальном примере.
Навигация по сущностям в файле
Одна из самых моих любимых фич Нетбинса. В PhpStorm тоже существует, но сделано немного менее удобно.
Наведите курсор на переменную, подождите когда она подсветится. Далее нажимайте alt+up/down, чтобы переходить к местам использования этой переменной в файле.
Точно также можно подсветить какой-то метод или название класса и переходить по их использованиям в файле. Точно также можно переходить по сущностям на других языках программирования, например, в JavaScript.
Открыть все изменённые файлы в проекте
Допустим, у вас возникла нужда: быстро понять, какие конкретно изменения в данный момент присутствуют в текущем проекте, а также проанализировать и скорректировать их. В обычной ситуации можно написать git status и увидеть список файлов, которые изменены. В случае с Netbeans, всё ещё проще:
Автоформатирование кода
У вас есть большой файл с кучей кода, который выглядит ужасно? Нет проблем, просто нажмите Alt+Shift+F, и Netbeans сделает его конфеткой :)
Вы можете очень гибко настраивать то, как Netbeans будет форматировать ваш код. При необходимости, для отдельного проекта можно сохранить свои собственные настройки форматирования, хранить их в репозитории проекта и использовать их всей своей командой.
А если вы нажмёте Alt+Shift+F будучи на какой-то папке вашего проекта в дереве файлов, то Netbeans услужливо предложит рекурсивно отформатировать весь код в данной папке.
Подсветка некорректно используемых или неиспользуемых переменных и методов
По этой части PhpStorm явно выигрывает у Netbeans в силу намного большего количества различных интеллектуальных проверок и предложений по авто-исправлению кода.
Интеллектуальная коррекция Use директив
С приходом стандартов PSR в мир PHP, исходные коды проектов преобразились и стали активно использовать неймспейсы. Теперь у каждого PHP-класса присутствует целый ворох use-директив, указывающих, какие конкретно зависимости использует данный класс.
Чтобы проще работать со всем этим делом, в Netbeans существует функция автокоррекции этих директив. Просто нажмите комбинацию Ctrl+Shift+I.
PhpStorm делает всё примерно также, но чуточку изящнее и умнее.
Сортировка вкладок
Когда у нас открыт десяток вкладок, бывает, что очень хочется быстренько переместить одну из них между ними. Да, обычно это приходится делать мышкой, но ведь намного удобнее, когда такая возможность есть прямо в клавиатурной комбинации!
Эту комбинацию надо установить вручную через настройки. Я повесил себе это на Alt+Shift+PgUp/PgDn
В PhpStorm это до сих пор не реализовали.
Редактирование переменной в файле/проекте
Вы неудачно назвали класс, и его хорошо бы переименовать? Или то же самое случилось с одной из ваших переменных? Нет ничего проще, если у вас под рукой Netbeans или другая подобная IDE.
Для редактирования переменной или класса, наведите курсор на нужный объект и нажмите комбинацию Ctrl+R.
Автогенерация геттеров и сеттеров
Иногда мы создаём какой-то новый класс, и в соответствии с подходом АТД (абстрактных типов данных), будет правильно, если мы установим для всех нужных переменных класса геттеры и сеттеры. Снова к нам на помощь приходят умные IDE, которые вполне могут сделать всё это за вас.
Создайте новый класс и определите все его переменные, после чего нажмите комбинацию Alt+Insert.
Переопределение методов
Бывает, что мы пишем класс, который зависит от другого класса, и у нас возникает нужда в переопределении одного из методов родительского класса. Здесь нам снова помогает комбинация Alt+Insert.
Навигация по результатам поиска
Все мы знаем, что очень часто в проекте необходимо найти какую-то однотипную конструкцию, и что-то с нею сделать. В этом случае в работе очень помогает наличие горячих клавиш для навигации по результатам поиска: Ctrl+[точка/запятая]. Netbeans будет автоматически открывать нужные файлы и переключать курсор на нужную строку. Это очень сильно облегчает работу при большом рефакторинге.
Выделение более широкого/узкого блока кода
Очень интересная функция, которая есть в Netbeans, но про которую я вспоминаю довольно редко :) Нажатие alt+shift+[точка/запятая] выделяет большую/меньшую область относительно изначального положения курсора. Это тоже надо видеть на реальном примере, чтобы лучше понять:
На этом пока что всё, и надеюсь, что эта статья поможет вам и облегчит вам вашу работу :)
Ну и конечно же, всегда будет интересно почитать в комментариях о других IDE и других излюбленных трюках, которые используют другие программисты в своей повседневной работе. Дерзайте :)
Большинство разработчиков проводят львиную часть своего времени в среде разработки. Но далеко не все используют хотя бы половину возможностей, которые есть в IDE, тем самым делая свою работу местами скучной, монотонной, медленной. Не, это не наш путь! Свой основной рабочий инструмент нужно использовать на полную, выжимать из него максимум, и всё самое неинтересное, все часто повторяющиеся действия перекидывать на плечи программы.
Я не хочу и не буду описывать стандартные фишки вроде «поддерживает PHP 5.*, CSS 3.*, SVN, Git, etc», «подсветка для Smarty» и остальные очевидные вещи. Хочется поделиться тем, что мне лично неоднократно помогало в настройке нетбинс, и тем, что в большей мере не замечалось и не использовалось коллегами по цеху (если верить моим наблюдениям и вопросам в твитере). Начнем издалека — с настройки IDE.
Настройка Нетбинс
Убираем лишнее
По умолчанию в редакторе для кода остается не так уж много места. Всякие тулбары, дополнительные окна и т.д. Когда монитор далеко за два десятка дюймов — это вроде и не проблема. Но когда IDE используется на ноутбуке/нетбуке — уже напрягает.
Для начала уменьшим иконки для кнопок главного тулбара: View → Toolbars → Small Toolbal Icon
Еще для увеличения полезного пространства можно вообще убрать тулбар в окне редактора через контекстное меню в левой панели редактора.
В дополнение ко всему переключимся в полноэкранный режим через Alt + Shift + Enter . И еще одна часто используемая комбинация клавиш: Shift + Esc – максимизация активного окна, а повторное нажатие вернет окну прежний размер.
В результате несложных манипуляций полезная площадь для кода существенно увеличилась, хотя настройка внешнего вида нетбинс – дело в буквальном смысле пары минут.
Сразу же, по ходу прочтения статьи, пробуйте горячие клавиши на практике:
- во-первых – увидите, как именно они работают;
- во-вторых – больше шансов, что они таки не вылетят из головы уже к концу следующего абзаца =)
Форматирование кода в Нетбинс
В 90% случаев IDE прекрасно справляется с этой задачей, вот и пускай она ей и занимается, а не мы.
Вроде все более-менее удобно, так как сразу видно, какое поле за какое место в коде отвечает. Но, к сожалению, подсветка добавлена не NetBeans’ом, а вручную в графическом редакторе. Ну, а пока такой удобный функционал не добавили в редактор – при необходимости приходится подглядывать в эти самые статьи.
Групповое мультистрочное выравнивание NetBeans
Одна из причин, почему я в свое время не всегда позволял себе применить автоформатирование ко всему файлу — сбивались отступы для массивов и т.д.
Обделённые вниманием фичи NetBeans
Автоматическое удаление висячих пробелов. Такие «невидимые друзья» могут очень подпортить нервы. Особенно при работе в команде.
А потом появляются вот такие дифы файлов в комитах, где кроме пробелов ничего и не поменялось.
Вызываем окно настроек Tools → Options , вкладка Editor → General , в самом низу пункт When Saving Files → Remove Trailing Whitespace . И вместо Never выбираем или Always , или From Modified Lines Only . И спокойно забываем о лишних пробелах в своем коде, IDE обо всем позаботиться.
Также на вкладе Editor → Hints есть несколько экспериментальных опций. Сразу рекомендую включить пункты:
Variable might have not been initialized и Variable does not seem to be used in its scope
Назначение каждого из них, думаю, разъяснять нет необходимости. Для довольно немаленьких проектах на Zend Framework проблем с производительностью не замечал, так что можно и даже нужно пользоваться этими фичами.Дальше рекомендую включить опцию View → Show Versioning menus , благодаря которой в окне дерева проекта для библиотек будут отображаться их текущие версии tag или branch . На скриншоте пример для подключенных через svn:externals библиотек из тегов.
Цветовая схема
Цветовая схема по умолчанию не из лучших, поэтому я считаю как минимум донастройку стандартной схемы, или даже замену на другую обязательным шагом к комфортному процессу разработки.
Из готовых схем есть порт под NetBeans довольно распространенной темы Solarized. Доступна как светлая, так и темная версия.
Solarized Colorscheme for NetBeans.Плагины NetBeans
Использование: tips&tricks
Первое, к чему нужно себя приучить: по максимуму обходится без мышки. С клавиатурой работать намного быстрее и продуктивнее, да и не ко всему функционалу IDE есть доступ через пункты меню (или же запрятан он достаточно глубоко, чтобы напрочь отбить желание каждый раз искать его указателем мыши).
Горячие клавиши в NetBeans
Первое, с чего нужно начать — распечатать список основных горячих клавиш нетбинс, ( Help → Keyboard Shortcuts Card ) и подсматривать в него, пока использование не дойдет до автоматизма. А я пока попробую разогреть интерес.
Если вам необходимо поменять регистр букв в длинном слове (переменной, etc), что вы сделаете? Перепечатаете слово заново? Не советую: достаточно просто выделить необходимые символы, нажать Ctrl + U , а потом – U для верхнего регистра, или L для нижнего. Ну а нажатая после комбинации Ctrl + U клавиша S (Switch) – поменяет регистр для каждой буквы выделенного блока на противоположный.
Ставим курсор на нужную строку или выделяем целый блок, потом Alt + Shift + ← , ↑ , ↓ или → и он без проблем мигрирует в любом направлении. Не нужно больше «перемещать» код через копипаст. I like to move it, move it! :)
А если вместо Alt + Shift нажать Ctrl + Shift + ↑ или ↓ , то выделенный блок продублируется в указанном стрелками направлении.
Ctrl + Space – стандартное автодополнение.
Ctrl + P – отображение аргументов для выбранного метода/функции/класса.
Ctrl + Shift + Space – отображение всплывающего окна с документацией (сгенерированной из док-блоков).Ctrl + G – переход к строке номер .
Ctrl + E – удалить текущую строку под курсором, или выделенный блок.
Ctrl + Q – переход к последнему месту редактирования (чтобы оценить всю полезность — нужно попробовать в работе после активного рефакторинга, etc).
Ctrl + Shift + V – вставка фрагмента кода из буфера, но уже сразу отформатированного (в соответствии с настройками, которые описывались выше).
Alt + Shift + J – выделение идентификатора. На самом деле – выделяет любое слово целиком, в котором сейчас находится курсор, а сам курсор ставит в конец выделенной строки:
Пока писал статью — обнаружил новое для себя и очень удобное сочетание клавиш для быстрого выделения блока кода. Ставим курсор, нажимаем Alt + Shift + . и с каждым нажатием выделяется блок побольше.
А сочетание Alt + Shift + , делает ровно наоборот – с каждым нажатием уменьшает область выделения.
P.S. Чтобы легче запомнить это сочетание клавиш (точка и запятая как-то вообще никак у меня в голове не укладывались), я запомнил их как Alt + Shift + > и Alt + Shift + (выделить больше/меньше).
Ctrl + Enter – после строки с курсором добавляются новые переводы строк, сам курсор остается на месте.
Shift + Enter – даже если курсор в середине строки, после нажатия перенесется на только что созданную строку, предыдущая же остается без изменений (как будто нажали сначала клавишу End , а потом Enter ).
Для быстрой навигации без мышки:
- Ctrl + 0 – редактор кода;
- Ctrl + 1 – окно Projects;
- Ctrl + 7 – окно Navigator.
Если необходимо открыть какой-то файл, какими будут ваши действия? Рука потянется за мышкой, чтобы открывать папку за папкой в дереве проекта, пока не доберется до искомого файла. И это — если помнить в каком месте он расположен. Долго. Не всегда удобно. Зато гораздо проще и быстрее найти файл (или же класс) по его имени.
Alt + Shift + O – Поиск файла по имени.
Ctrl + O – Поиск файла по имени класса в нем.
Причем совсем не обязательно вводить имя файла полностью:
Alt + Ins – генератор кода. В зависимости от контекста содержание всплывающего меню будет разным. Например, у нас есть модель с описанными свойствами, теперь нужно на каждое из них создать сеттер и геттер. Скучно и утомительно. Тогда пускай это делает IDE. Выбираем из меню необходимый нам пункт.
В диалоговом окне выбираем свойства, для которых будем генерить код.
И любуемся результатом.
Кстати, о фичах, которые спрятаны за горячими клавишами, и к которым иначе в принципе не доберешься: экспорт текущих сочетаний горячих клавиш в HTML. Фильтруем список клавиш по слову HTML, выделяем необходимую функцию и назначаем ей свое сочетание.
После нажатия Alt + Shift + E (или что там вы у себя поставили) — сгенерируется HTML-файл, в котором будет список всех доступных функций и горячие клавиши к ним, разделенные по профилях (NetBeans, Eclipse, Idea, etc). Этот файл будет находится в папке с настройками NetBeans.
Мешок полезностей
Если поставить курсор на слово function в методе, то подсветятся все точки выхода ( return ). Причем IDE правильно проигнорировала return из анонимной функции.
Ctrl + Shift + 1 – подсветит текущий открытый файл в дереве проекта. А Ctrl + Shift + 2 и Ctrl + Shift + 3 в дереве файлов и в избранном, соответственно.
При переходе по открытых вкладках через Ctrl + Tab в левом углу отображается полный путь к файлу.
Аннотации из текущей VCS для файла: Team → Show Annotations . Удобно смотреть, кто и когда редактировал каждую строку кода.
Если из консоли выполнить:
то переданный аргументом файл откроется в NetBeans на 15-й строке.
Начиная с версии NetBeans 7.1 добавили еще несколько таких приятных мелочей, как «прямоугольное» выделение кода и масштабирование кода в редакторе (зажатый Ctrl + колесо мышки).
Удобно, когда нужно взглянуть на код «с высоты птичьего полета»
или при проведении презентаций, если есть необходимость вывести IDE на большой экран.
Йааазь!
Имхо, самый сильный и универсальный функционал NetBeans. Позволяет автоматизировать почти всю рутину про кодинге.
Когда я только начинал писать статью — то думал, что именно эта часть получится самой обширной. Но в процессе работы нашлись неплохие материалы, досконально описывающие все что нужно. Настоятельно рекомендую внимательно ознакомится с материалами, и обязательно попробовать применить их на практике с учетом специфики именно вашего проекта. Уверен, что результатом останетесь довольны.
Шаблоны кода для NetBeans
Некоторые шаблоны кода присутвуют в NetBeans прямо из коробки. Давайте посмотрим на один из них.
Например у нас есть строка кода:
Набираем vdoc на строкой, нажимаем Tab, и смотрим результат:
Автоматически подхватилось имя переменной и ее тип. Замечательно же, правда?
А вот и «код» этой заготовки (немного отформатировал его для наглядности):
Все подробности о шаблонах кода нетбинс в деталях и со скриншотами описаны в статье на сайте IDE.
Макросы для NetBeans
Замечательнейшая вещь, которая дополняет шаблоны кода в плане автоматизации, и позволяет реализовать все те мелкие «изюминки» в IDE, которых так не хватает для комфортной работы, — макросы нетбинс.
Как найти два файла с совпадающими данными в сценарии оболочки и дубликат хранилища данных в другом файле оболочки?
Я написал код, но он не работал. Как это написать?
Чтобы просто проверить, совпадают ли два файла, используйте cmp -s :
Если ваши два входных файла содержит список путей файлов, которые вы хотите сравнить, используйте двойной цикл, например:
Здесь результат создается как на терминале, так и в файле file-comparison.out .
Предполагается, что ни один путь в двух входных файлах не содержит встроенных символов новой строки.
Код сначала считывает все пути из одного из файлов в массив, files1 , с помощью mapfile . Я делаю это, чтобы не читать этот файл более одного раза, так как нам придется просматривать все эти пути для каждого пути в другом файле. Вы заметите, что вместо чтения из $filelist1 во внутреннем цикле я просто перебираю имена в files1 массив.
- мне нужна полная программа в оболочке bash
- @santhoshreddy См. обновленный ответ.
Самый простой способ - использовать команду diff .
пример:
предположим, что первый файл file1.txt и он содержит:
и второй файл file2.txt
тогда мы можем использовать команду diff для автоматического отображения строк, различающихся в двух файлах:
diff file1.txt file2.txt
Давайте посмотрим, что означает этот вывод. Важно помнить, что когда diff описывает вам эти различия, он делает это в предписывающем контексте: он сообщает вам, как изменить первый файл, чтобы он соответствовал второму файлу. Первая строка вывода diff будет содержать:
- номера строк, соответствующие первому файлу,
- буква (a для добавления, c для изменения или d для удаления)
- номера строк, соответствующие второму файлу.
Вот чистый сценарий оболочки bash для сравнения файлов:
Комментарии к конкретным командам можно удалить, чтобы выйти при первом обнаруженном различии и, если вы хотите, увидеть каждую прочитанную строку.
Читайте также: