Netbeans сравнить 2 файла

Обновлено: 02.07.2024

это хороший способ сравнить текстовые файлы? Что предпочтительнее?

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 и других излюбленных трюках, которые используют другие программисты в своей повседневной работе. Дерзайте :)

    Настройка Netbeans: все фишки, о которых вы могли не знать

    Большинство разработчиков проводят львиную часть своего времени в среде разработки. Но далеко не все используют хотя бы половину возможностей, которые есть в IDE, тем самым делая свою работу местами скучной, монотонной, медленной. Не, это не наш путь! Свой основной рабочий инструмент нужно использовать на полную, выжимать из него максимум, и всё самое неинтересное, все часто повторяющиеся действия перекидывать на плечи программы.

    Я не хочу и не буду описывать стандартные фишки вроде «поддерживает PHP 5.*, CSS 3.*, SVN, Git, etc», «подсветка для Smarty» и остальные очевидные вещи. Хочется поделиться тем, что мне лично неоднократно помогало в настройке нетбинс, и тем, что в большей мере не замечалось и не использовалось коллегами по цеху (если верить моим наблюдениям и вопросам в твитере). Начнем издалека — с настройки IDE.

    Настройка Нетбинс

    Убираем лишнее

    По умолчанию в редакторе для кода остается не так уж много места. Всякие тулбары, дополнительные окна и т.д. Когда монитор далеко за два десятка дюймов — это вроде и не проблема. Но когда IDE используется на ноутбуке/нетбуке — уже напрягает.

    NetBeans settings

    Для начала уменьшим иконки для кнопок главного тулбара: View → Toolbars → Small Toolbal Icon

    Тулбар с большими иконками

    Тулбар с маленькими иконками

    Еще для увеличения полезного пространства можно вообще убрать тулбар в окне редактора через контекстное меню в левой панели редактора.

    Контекстное меню, скрытие тулбара

    В дополнение ко всему переключимся в полноэкранный режим через Alt + Shift + Enter . И еще одна часто используемая комбинация клавиш: Shift + Esc – максимизация активного окна, а повторное нажатие вернет окну прежний размер.

    В результате несложных манипуляций полезная площадь для кода существенно увеличилась, хотя настройка внешнего вида нетбинс – дело в буквальном смысле пары минут.

    Окно редактора

    Сразу же, по ходу прочтения статьи, пробуйте горячие клавиши на практике:

    • во-первых – увидите, как именно они работают;
    • во-вторых – больше шансов, что они таки не вылетят из головы уже к концу следующего абзаца =)

    Форматирование кода в Нетбинс

    В 90% случаев IDE прекрасно справляется с этой задачей, вот и пускай она ей и занимается, а не мы.

    Code formatting in NetBeans

    Вроде все более-менее удобно, так как сразу видно, какое поле за какое место в коде отвечает. Но, к сожалению, подсветка добавлена не NetBeans’ом, а вручную в графическом редакторе. Ну, а пока такой удобный функционал не добавили в редактор – при необходимости приходится подглядывать в эти самые статьи.

    Групповое мультистрочное выравнивание NetBeans

    Одна из причин, почему я в свое время не всегда позволял себе применить автоформатирование ко всему файлу — сбивались отступы для массивов и т.д.

    Group multiline alignment in 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 code templates

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

    Из готовых схем есть порт под 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, выделяем необходимую функцию и назначаем ей свое сочетание.

    Экспорт текущих гарячих клавиш в 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 . Удобно смотреть, кто и когда редактировал каждую строку кода.

    Аннотации к коду из VCS

    Если из консоли выполнить:

    то переданный аргументом файл откроется в 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 для сравнения файлов:

    Комментарии к конкретным командам можно удалить, чтобы выйти при первом обнаруженном различии и, если вы хотите, увидеть каждую прочитанную строку.

    Читайте также: