Java проверка расширения файла

Как определить расширение файла из URI

Предполагая, что мне предоставлен URI, и я хочу найти расширение файла возвращаемого файла, что мне нужно сделать в Java. Например, файл http://www.daml.org/2001/08/baseball/baseball-ont является http://www.daml.org/2001/08/baseball/baseball-ont.owl Когда я делаю

 URI uri = new URI(address); URL url = uri.toURL(); String file = url.getFile(); System.out.println(file); 

Я не могу видеть полное имя файла с расширением .owl , просто /2001/08/baseball/baseball-ont , как получить расширение файла. «

8 ответов

Во-первых, я хочу убедиться, что вам не удается узнать, какой файл имеет URI-ссылки, поскольку ссылка, заканчивающаяся на .jpg , может позволить вам получить доступ к файлу .exe (это особенно верно для URL-адреса, из-за символических ссылок и файлов .htaccess), поэтому не является надежным решением для получения реального расширения из URI, если вы хотите ограничить допустимые типы файлов, если это то, что вы собираетесь делать, конечно. Итак, я предполагаю, что вы просто хотите знать, какое расширение файла основано на его URI, даже если это не полностью заслуживает доверия; Вы можете получить расширение из любого URL-адреса URI, URL-адреса или файла, используя приведенный ниже метод. Вам не нужно использовать какие-либо библиотеки или расширения, поскольку это базовая функциональность Java. Это решение получает позицию последнего знака . (period) в строке URI и создает подстроку, начинающуюся с позиции знака периода, заканчивающегося в конце строки URI.

String uri = "http://www.google.com/support/enterprise/static/gsa/docs/admin/70/gsa_doc_set/integrating_apps/images/google_logo.png"; String extension = uri.substring(uri.lastIndexOf(".")); 

Этот пример кода выше будет выводить расширение .png из URI в переменной extension , обратите внимание, что a . (период) включен в расширение, если вы хотите собрать расширение файла без префиксный период, увеличьте индекс подстроки на единицу, например:

String extension = uri.substring(url.lastIndexOf(".") + 1); 

Один из способов использования этого метода над регулярными выражениями (метод, которым другие люди используют много) заключается в том, что это намного дешевле ресурс и намного менее тяжелый для выполнения, давая тот же результат. Кроме того, вы можете убедиться, что URL-адрес содержит символ периода, для достижения этого используйте следующий код:

String uri = "http://www.google.com/support/enterprise/static/gsa/docs/admin/70/gsa_doc_set/integrating_apps/images/google_logo.png"; if(uri.contains("."))
  • Проверяйте URI, проверяя его существование или убедившись, что синтаксис URI действителен, возможно, используя регулярное выражение.
  • Обрежьте расширение, чтобы удалить нежелательные пробелы.
Читайте также:  Ввод переменных с консоли java

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

Источник

Определение типов файлов в Java

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

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

О примерах

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

файл
название
файл
расширение
файл
Тип
Тип совпадений
Конвенция о продлении?
actualXml.xml XML XML да
blogPostPDF PDF нет
blogPost.pdf PDF PDF да
blogPost.gif GIF GIF да
blogPost.jpg JPG JPEG да
blogPost.png PNG PNG да
blogPostPDF.txt текст PDF нет
blogPostPDF.xml XML PDF нет
blogPostPNG.gif GIF PNG нет
blogPostPNG.jpg JPG PNG нет
dustin.txt текст Текст да
dustin.xml XML Текст нет
Дастин Текст нет

Files.probeContentType (Path) [JDK 7]

Java SE 7 представила высоко утилитарный класс Files, и Javadoc этого класса кратко описывает его использование: «Этот класс состоит исключительно из статических методов, которые работают с файлами, каталогами или другими типами файлов» и «в большинстве случаев с методами, определенными здесь делегирует соответствующему провайдеру файловой системы для выполнения файловых операций ».

Класс java.nio.file.Files предоставляет метод probeContentType (Path), который «проверяет тип содержимого файла» посредством использования «установленных реализаций FileTypeDetector» (Javadoc также отмечает, что «данный вызов виртуальной машины Java») ведет общесистемный список детекторов типов файлов »).

Источник

Java RegEx – Validate File Name & Extension

Java RegEx – Validate File Name & Extension example shows how to validate a file name along with the file extension using Java regex pattern.

How to validate a file name in Java using regex?

File name validation can be done by writing an appropriate regex pattern according to the file name requirements you have. For the purpose of this example, let’s assume that the file name may contain only letters, numbers, hyphens (“-“), underscores, dots (“.”), and spaces.

For the extension part, the file name must have one of these extensions (doc, pdf, csv, and xls).

Here is the pattern for these requirements.

[a-zA-Z0-9._ -] — Any character between a to z or A to Z, any digit between 0 to 9, a dot, an underscore, a space, a hyphen

Let’s try this pattern with some of the sample file names we want to validate.

The first file name contains an exclamation mark (!) that is not allowed so it fails, the second file name does not have the required extension so it fails as well.

The third file name does not have an extension, similarly, the fourth file name only has an extension so both of them fail in the validation. The rest of the file names passed the regex validation as they fulfill all the criteria.

You can add or remove any character you want to allow or disallow in the regex to fit your needs.

Important note: Many operating systems treat file names with the only extension as a valid one. In that case, you can replace the “+” with “*” to allow file names with only extensions as given below.

The “+” matches one or more times, while the “*” matches with zero or more. So even if any of the allowed characters are absent before the dot “.”, the pattern will still match.

If you want to learn more about the regex, please visit the Java regex tutorial.

Please let me know your views in the comments section below.

Источник

Оцените статью