- Java: Проверьте, существует ли файл или каталог
- Вступление
- Проверьте, существует ли файл
- Файлы.существует()
- Файлы.Не существует()
- Файлы.isRegularFile()
- Файл.isFile()
- Файл.существует()
- Git Essentials
- Заблокированные Файлы
- Проверьте, существует ли Каталог
- Файлы.существует()
- Files.isDirectory()
- Проверьте, является ли Файл символической ссылкой
- Файлы.isSymbolicLink()
- Файл.getCanonicalPath() против файла.getAbsolutePath()
- Проверьте, Существует Ли Какой-Либо Из Них
- Вывод
- Проверить наличие файла в папке активов андроидов?
- Проверить наличие файла в папке активов андроидов?
- 7 сервисов для поиска уязвимости мобильных приложений
- 1. Ostorlab
- 2. Appvigil
- 3. Quixxi
- 4. AndroTotal
- 5. Akana
- 6. NVISO
- 7. SandDroid
Java: Проверьте, существует ли файл или каталог
Проверка наличия файла или каталога-простая и важная операция во многих задачах. В этой статье мы рассмотрим множество различных способов, которые вы можете использовать, чтобы проверить, существует ли файл или каталог, если это символическая ссылка, и недостатки этих подходов.
Автор: David Landup
Дата записи
Вступление
Проверка наличия файла или каталога-простая и важная операция во многих задачах. Перед доступом к файлу мы должны проверить, существует ли он, чтобы избежать исключения NullPointerException . То же самое касается каталогов.
Хотя некоторые функции могут создавать новый файл/каталог, если запрошенный не существует, это может быть противоположностью тому, что мы хотим. Если мы хотим добавить дополнительную информацию в существующий файл, а метод выполняется без предупреждения, так как он создает необходимый ему новый файл, мы, возможно, потеряли некоторую информацию, не осознавая этого.
Здесь у нас простая структура:
Там есть file.txt файл и symlink.txt файл. В symlink.txt файл представляет собой символическую ссылку на file.txt .
Аналогично, у нас есть каталог и символическая ссылка на него – directory_link .
Проверьте, существует ли файл
Для работы с классом Files вам необходимо ознакомиться с классом Path . Файлы принимает только Путь , а не Файл объекты.
Для целей этого урока мы определим Файл и Путь экземпляр для file.txt в нашем каталоге:
Файлы.существует()
Тем не менее, первый способ, которым мы можем проверить, существует ли файл, – это класс Files :
Запуск этого кода даст нам:
Файлы.Не существует()
Возможно, вам будет интересно, почему метод не существует() вообще существует:
Если существует() возвращает истину , это означает, что не существует() должно возвращать ложь . Они логически дополняют друг друга и A = !B , верно?
Ну, вот тут-то многие и ошибаются. Если Files.exists() возвращает false , это не должно означать, что файл не существует.
Это также может означать, что существование файла не может быть проверено . В этом случае оба Files.exists() и Files.notExists() вернут false , поскольку Java не может определить, существует файл или нет.
Обычно это происходит, если у вас есть файл, заблокированный таким образом, что Java не может получить к нему доступ. Представьте, что у нас есть файл, который заблокирован в нашем каталоге – lockedFile.txt :
И если бы мы попытались проверить его существование с помощью:
Нас встретили бы с:
Очевидно, что он существует, но Java не имеет разрешения на подтверждение этого в нашей системе, что приводит к противоречивым результатам.
Файлы.isRegularFile()
Кроме того, мы можем проверить, является ли файл обычным файлом ( false если это каталог) с помощью метода isRegularFile() :
На выходе получается:
Файл.isFile()
Вместо использования класса Files мы также можем выполнять методы для самих файловых объектов:
Файл.существует()
Аналогично предыдущему варианту, мы можем запустить метод exists() :
И это также возвращает:
Git Essentials
Ознакомьтесь с этим практическим руководством по изучению Git, содержащим лучшие практики и принятые в отрасли стандарты. Прекратите гуглить команды Git и на самом деле изучите это!
Разница между этими двумя заключается в том, что первый проверяет, является ли это файлом, а другой проверяет, существует ли он. В разных обстоятельствах они дали бы разные результаты.
Заблокированные Файлы
Забавно отметить, что если вы используете Файл для проверки существования, Java может определить, существует ли заблокированный ранее файл или нет:
Запуск этого фрагмента кода приведет к:
При этом очевидно, что заблокированный файл может быть прочитан с помощью класса File вместо вспомогательного класса Files .
Проверьте, существует ли Каталог
Каталоги-это, по сути, файлы, которые могут содержать другие файлы. Вот почему проверка того, является ли каталог файлом, вернет true . Хотя, если вы проверяете, является ли каталог каталогом (файл особого типа), вы получите более точный результат.
На этот раз мы меняем наше местоположение на:
Файлы.существует()
Опять же, как и в первом примере, мы можем проверить, существует ли он с помощью:
На выходе получается:
Files.isDirectory()
Если бы мы хотели проверить, является ли это конкретным каталогом, мы бы использовали:
И результат таков:
Примечание: Если каталог не существует , метод isDirectory() вернет false . Это связано с тем, как называется метод. Что он делает – он проверяет, существует ли файл и , если это каталог, а не только последний. Файл не может быть каталогом, если он не существует – следовательно, возвращается false .
Проверьте, является ли Файл символической ссылкой
Возможно, вы также захотите проверить, является ли файл просто символической ссылкой. В этом случае вы бы использовали класс Files .
Давайте переключим наше местоположение на:
Файлы.isSymbolicLink()
Как обычно, класс Files принимает Путь к файлу:
Запуск этого приведет к:
Файл.getCanonicalPath() против файла.getAbsolutePath()
Другой способ проверить наличие символической ссылки-сравнить результаты канонического пути к файлу и абсолютного пути. Если они разные, то, скорее всего, это символическая ссылка:
Поскольку мы проверяем наличие символической ссылки, и мы знаем, что это так, они должны возвращать другой результат – a symlink.txt и file.txt путь:
Однако здесь это не так. Это связано с тем, что символическая ссылка была создана в Windows с использованием NTFS (Файловая система новой технологии). Символическая ссылка была создана с помощью команды mklink в CMD.
Проверьте, Существует Ли Какой-Либо Из Них
Из предыдущих примеров очевидно, что метод Files.exists() вернет true как для существующих файлов, так и для каталогов. Хотя, это не работает лучше всего, когда дело доходит до заблокированных файлов.
С другой стороны, метод exists() из класса File также вернет true как для файлов, так и для каталогов и сможет прочитать заблокированный файл, который класс Files не может.
Вывод
Проверка наличия файлов и каталогов-это первая линия защиты от пропавших файлов и каталогов. Разные подходы имеют разные недостатки, и вы можете предположить, что метод вернет точный результат, но это не произойдет из-за того, как он работает в фоновом режиме.
Знание того, какие методы возвращают какие результаты и при каких обстоятельствах, позволит вам избежать неприятных исключений при обработке файлов.
После проверки того, существует ли ваш файл или нет, вы, скорее всего, захотите прочитать и записать файлы на Java .
Источник
Проверить наличие файла в папке активов андроидов?
Мое приложение имеет .txt-файлы в подкаталогах в папке с ресурсами. Он читает эти .txt-файлы и помещает их в текстовое окно. Он работает отлично и без проблем.
Должен ли я беспокоиться о том, что файлы в папке с ресурсами удаляются пользователем или отсутствуют. Если это когда-либо случится, мое приложение получит ошибку, потому что файл не будет там, когда он попытается прочитать его в потоке.
Есть ли необходимость в проверке наличия файла актива до того, как я его прочитаю или менеджер активов позаботится обо всем этом? Я также задавался вопросом, есть ли шанс, что пользователь мог бы или мог бы удалить и файл активов.
Как я уже сказал, все отлично работает без меня, вставляя код для проверки существования файла. Я просто задавался вопросом, используют ли люди инструкцию .exists () каждый раз, когда они читают в потоке из активов.
Обычный пользователь не сможет их удалить, но пользователь на корневом телефоне, который не знает, что они делают … это совсем другая ситуация.
Если вы спросите меня, дополнительный код не нужен. Также, если вы попытаетесь открыть файл, который не существует, вы получите какое-то исключение, возникшее в какой-то момент, поймать его и отобразить диалоговое окно, если вы действительно этого хотите.
Вы можете быть обеспокоены тем, что файл был удален, и apk подал в отставку
Вы можете проверить, используя:
Если вы действительно хотите проверить наличие файла:
Если ваш файл находится в assets/folder/file.ext , то pathInAssets будет «folder/file.ext»
В идеале после создания apk никто не может удалить из него какие-либо активы, но если кто-то декомпилирует его и перекомпилирует, чем это возможно.
Хотя для других сценариев также, когда актива нет в apk в Runtime, мы можем проверить наличие актива.
В нашем приложении у нас есть условие для создания приложения с использованием gradle, ant и eclipse, и для каждого механизма сборки некоторые из наших файлов с активами поставляются в apk, а некоторые нет, поэтому для определения того, присутствует ли какой-либо файл активов в текущей сборке apk Во время выполнения,
Мы делаем это следующим образом:
Думаю, с тобой все в порядке. Из-за того, что у меня есть корень в моем телефоне, я не вижу никакого способа удалить оценки без удаления приложения, поскольку все это, кажется, завернуто в файл .apk. Вы можете это сделать, но я думаю, что вам нужно укорениться или использовать adb.
В любом случае, я бы лично окружал любые чтения / записи блоком try / catch, чтобы быть в безопасности.
Источник
Проверить наличие файла в папке активов андроидов?
Мое приложение имеет .txt-файлы в подкаталогах в папке с ресурсами. Он читает эти .txt-файлы и помещает их в текстовое окно. Он работает отлично и без проблем.
Должен ли я беспокоиться о том, что файлы в папке с ресурсами удаляются пользователем или отсутствуют. Если это когда-либо случится, мое приложение получит ошибку, потому что файл не будет там, когда он попытается прочитать его в потоке.
Есть ли необходимость в проверке наличия файла актива до того, как я его прочитаю или менеджер активов позаботится обо всем этом? Я также задавался вопросом, есть ли шанс, что пользователь мог бы или мог бы удалить и файл активов.
Как я уже сказал, все отлично работает без меня, вставляя код для проверки существования файла. Я просто задавался вопросом, используют ли люди инструкцию .exists () каждый раз, когда они читают в потоке из активов.
Обычный пользователь не сможет их удалить, но пользователь на корневом телефоне, который не знает, что они делают … это совсем другая ситуация.
Если вы спросите меня, дополнительный код не нужен. Также, если вы попытаетесь открыть файл, который не существует, вы получите какое-то исключение, возникшее в какой-то момент, поймать его и отобразить диалоговое окно, если вы действительно этого хотите.
Вы можете быть обеспокоены тем, что файл был удален, и apk подал в отставку
Вы можете проверить, используя:
Если вы действительно хотите проверить наличие файла:
Если ваш файл находится в assets/folder/file.ext , то pathInAssets будет «folder/file.ext»
В идеале после создания apk никто не может удалить из него какие-либо активы, но если кто-то декомпилирует его и перекомпилирует, чем это возможно.
Хотя для других сценариев также, когда актива нет в apk в Runtime, мы можем проверить наличие актива.
В нашем приложении у нас есть условие для создания приложения с использованием gradle, ant и eclipse, и для каждого механизма сборки некоторые из наших файлов с активами поставляются в apk, а некоторые нет, поэтому для определения того, присутствует ли какой-либо файл активов в текущей сборке apk Во время выполнения,
Мы делаем это следующим образом:
Думаю, с тобой все в порядке. Из-за того, что у меня есть корень в моем телефоне, я не вижу никакого способа удалить оценки без удаления приложения, поскольку все это, кажется, завернуто в файл .apk. Вы можете это сделать, но я думаю, что вам нужно укорениться или использовать adb.
В любом случае, я бы лично окружал любые чтения / записи блоком try / catch, чтобы быть в безопасности.
Источник
7 сервисов для поиска уязвимости мобильных приложений
Проверьте, есть ли в системе безопасности вашего мобильного приложения слабые места, и исправьте их, пока они не навредили вашей репутации.
Согласно последним исследованиям NowSecure более чем в 25% мобильных приложений есть хотя бы одна критически опасная уязвимость.
В 59% финансовых приложений для Android есть три уязвимости из списка OWASP Топ-10.
Чем больше используют мобильные телефоны, тем больше появляется мобильных приложений. В магазине приложений Apple App Store доступно более 2 миллионов приложений, а в Google Play Store — более 2,2 миллионов.
Существует множество видов уязвимости, к наиболее критичным из них относятся:
- утечка личной или конфиденциальной информации пользователей в сети (email, учетные данные, IMEI, GPS, MAC-адрес);
- обмен информации в сети без шифрования или с недостаточным шифрованием;
- файл доступен для чтения или записи любым лицом;
- выполнение произвольного кода;
- вредоносные программы.
Если вы владелец или разработчик приложения, вы должны сделать все для обеспечения безопасности вашего мобильного приложения. Существует много инструментов для поиска уязвимости сайтов, а информация ниже поможет вам найти слабые стороны системы безопасности мобильного приложения.
В статье используются следующие сокращения:
- APK – формат архивных файлов-приложений для Android (англ. Android Package Kit);
- IPA – формат архивных файлов-приложений для iPhone (англ. iPhone application archive);
- IMEI – международный идентификатор мобильного оборудования (англ. International mobile equipment identity);
- GPS – система глобального позиционирования (англ. Global positioning system);
- MAC – управление доступом к среде (англ. Media access control);
- API – интерфейс программирования приложений (англ. Application Programming Interface);
- OWASP – открытый проект обеспечения безопасности веб-приложений (англ. Open web application security project).
Инструменты для поиска уязвимости приложений Android или iOS:
1. Ostorlab
Ostorlab позволят проверить приложение на Android или iOS и получить подробный отчет о результатах проверки. Загрузите файл вашего приложения в формате APK или IPA и спустя несколько минут отчет о безопасности будет готов.
Максимальный размер файла для загрузки на проверку 60 Mb. Тем не менее, если размер вашего приложения превышает 60Mb, то можно связаться со специалистами Ostorlab, чтобы разместить файл через запрос API.
В основе лежат такие программы с открытым исходным кодом как Androguard и Radare2. Советую бесплатно проверить ваше мобильное приложение при помощи Ostorlab.
2. Appvigil
Найдите все пробелы в системе безопасности вашего мобильного приложения с помощью Appvigil и получите подробный отчет об уязвимости за считанные минуты.
С Appvigil вы получите не только описание возможных угроз, но и рекомендации по устранению уязвимости для быстрого решения проблемы. Никакие программы устанавливать не надо, поскольку все обрабатывается в облаке Appvigil.
После того, как вы загрузите файлы APK или IPA производится статический и динамический анализ приложения (Android/iOS), в том числе и на наличие уязвимости из списка OWASP Топ-10.
3. Quixxi
Quixxi предназначен для получения мобильной аналитики, защиты мобильных приложений и восстановления потенциальных доходов. Если вам нужно просто проверить приложение на наличие уязвимости, то загрузите файл приложения Android или iOS сюда.
Для проверки потребуется несколько минут. После завершения проверки у вас будет краткий отчет об уязвимости. Если же вам нужен полный отчет, то нужно зарегистрироваться на сайте. Это бесплатно.
4. AndroTotal
Как можно догадаться по названию, AndroTotal пригоден только для работы с приложениями на Android. AndroTotal проверяет файл APK на наличие вирусов и вредоносного кода, сверяя результаты следующих антивирусных программ:
- McAfee;
- TrustGo;
- ESET;
- Comodo;
- AVG;
- Avira;
- Bitdefender;
- Qihoo.
Если вам нужно быстро проверить APK-файлы на наличие вирусов, то AndroTotal является хорошим решением.
5. Akana
Akana — это интерактивный инструмент для анализа приложений для Android. Akana проверяет приложение на наличие вредоносного кода и отображает сведения о результатах.
Проверка бесплатная, так что попробуйте и посмотрите, нет ли в вашем Android приложении вредоносного кода.
6. NVISO
Nviso APKSCAN — это еще один удобный сетевой инструмент для проверки приложения на наличие вредоносного кода. Результаты могут быть готовы не сразу, это зависит от вашего места в очереди. Можете оставить свою электронную почту и получить уведомление, когда отчет будет готов.
Я проверил макет своего приложения с помощью Nviso и увидел, что проверяется следующее:
- активность диска;
- поиск вирусов;
- сетевой трафик;
- возможность совершения телефонного звонка, отправки SMS;
- криптографическая активность;
- утечка данных.
7. SandDroid
SandDroid проводит статический и динамический анализ и формирует полный отчет. Можно загрузить файл APK или zip-файл размером не более 50 Mb.
SandDroid разработан исследовательской группой Botnet и Сианьского транспортного университета. Проверяется следующее:
- размер/хеш файла, версия SDK;
- сетевые данные, компоненты, закодированные свойства, уязвимый API, анализ IP;
- утечки данных, SMS, отслеживание телефонных звонков;
- поведение, представляющее угрозу, и вероятность угрозы.
Запросите отчет и оцените безопасность вашего приложения.
Надеюсь, инструменты для проверки уязвимости помогут вам проверить безопасность мобильного приложения и устранить найденные проблемы.
Если у вас свой сайт, то возможно вас заинтересует возможность автоматической проверки сайта на наличие уязвимостей.
Надеюсь, что Вам также будет интересна возможность поиска виртуальных серверов и виртуального хостинга на Хостинг Кафе.
Источник