Перейти к содержимому

Как получить имя файла c

  • автор:

Как получить имя файла используя регулярное выражение?

Есть путь к файлу ,например такой «D:/QT projects/ConnectDB/Vlad.jpg»,как при помощи регулярного выражения получить Vlad.jpg?

Отслеживать
задан 8 ноя 2017 в 21:24
464 1 1 золотой знак 5 5 серебряных знаков 25 25 бронзовых знаков
Для этого не нужно регулярное выражение, достаточно функций strrchr и substr или их аналогов
8 ноя 2017 в 21:26
что-то в qt не получается найти substr
8 ноя 2017 в 21:49
Я бы сильно удивился, если бы ничего аналогичного там не было.
8 ноя 2017 в 21:53
Я не нашел,к сожалению(
8 ноя 2017 в 21:55

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Судя по всему, сработает такое:

QString fileName = QFileInfo("D:/QT projects/ConnectDB/Vlad.jpg").fileName(); 

Отслеживать
ответ дан 8 ноя 2017 в 22:26
207k 28 28 золотых знаков 293 293 серебряных знака 526 526 бронзовых знаков

Вот извращенный 🙂 способ, заодно знакомящий с алгоритмами STL

const char sz [] = "dir1\\dir2\\dir3\\dir4\\name.ext"; std::cout (sz + strlen (sz)), std::reverse_iterator (sz), '\\').base (); 

Если использовать std::string, то все попроще. Пример для Винды, у Вас, видимо, слеш другой, замените на поиск ‘/’.

Отслеживать
ответ дан 8 ноя 2017 в 22:18
Alex Titov Alex Titov
1,224 7 7 серебряных знаков 8 8 бронзовых знаков

  • c++
  • qt
  • qtcreator
  • path
  • qregexp
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.8.3130

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Функции поиска имени файла

Эти функции осуществляют и завершают поиск для указанных имен файлов:

  • _findnext , _wfindnext
  • _findfirst , _wfindfirst
  • _findclose

Замечания

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

Функции возвращают сведения о файле в _finddata_t структуре, которая определена в IO.h . Различные функции в данном семействе используют множество вариантов структуры _finddata_t . Базовая структура _finddata_t содержит следующие элементы:

unsigned attrib
Атрибут файла.

time_t time_create
Время создания файла ( -1L для файловых систем FAT). Это время хранится в формате UTC. Для преобразования в местное время используйте функцию localtime_s .

time_t time_access
Время последнего доступа к файлам ( -1L для файловых систем FAT). Это время хранится в формате UTC. Для преобразования в местное время используйте функцию localtime_s .

time_t time_write
Время последней записи в файл. Это время хранится в формате UTC. Для преобразования в местное время используйте функцию localtime_s .

_fsize_t size
Длина файла в байтах.

char name [ _MAX_PATH ] NULL — прерванное имя сопоставленного файла или каталога без пути.

В файловых системах, которые не поддерживают создание и время последнего доступа к файлу, такие как система FAT, time_create всегда time_access являются -1L полями.

_MAX_PATH определяется как Stdlib.h 260 байт.

Не удается указать целевые атрибуты (например _A_RDONLY ), чтобы ограничить операцию поиска. Эти атрибуты возвращаются в attrib поле _finddata_t структуры и могут иметь следующие значения (определены в IO.h ). Пользователи не должны полагаться на эти атрибуты, являясь единственными значениями, возможными для attrib поля.

_A_ARCH
Архивный. Установите каждый раз, когда файл изменяется и очищается командой BACKUP . Значение: 0x20 .

_A_HIDDEN
Скрытый файл. Не часто встречается с командой DIR , если вы не используете /AH этот параметр. Возвращает сведения об обычных файлах и файлах, имеющих этот атрибут. Значение: 0x02 .

_A_NORMAL
Нормальный. У файла не установлены никакие другие атрибуты, чтение и запись возможны без ограничений. Значение: 0x00 .

_A_RDONLY
Только чтение. Невозможно открыть файл для записи, и файл с тем же именем не удается создать. Значение: 0x01 .

_A_SUBDIR
Подкаталог. Значение: 0x10 .

_A_SYSTEM
Системный файл. Обычно не видно с DIR помощью команды, если /A только не используется параметр или /A:S параметр. Значение: 0x04 .

Функция _findnext находит следующее имя, если таковое имеется, которое соответствует аргументу filespec , указанному в предыдущем вызове функции _findfirst . Аргумент fileinfo должен указывать на структуру, инициализированную предыдущим вызовом функции _findfirst . Если обнаружено соответствие, содержимое структуры fileinfo изменяется, как описано выше. В противном случае он остается неизменным. Функция _findclose закрывает указанный дескриптор поиска и освобождает все связанные ресурсы для функций _findfirst и _findnext . Дескриптор, возвращенный ранее функцией _findfirst или _findnext , необходимо сначала передать в функцию _findclose , чтобы можно было выполнять операции изменения (например, удаление) в каталогах, которые образуют переданные им пути.

Функции _find допускают вложение. Например, если вызов функции _findfirst или _findnext нашел файл, являющийся подкаталогом, новый поиск можно начать другим вызовом функции _findfirst или _findnext .

_wfindfirst и _wfindnext — это версии функций _findfirst и _findnext для расширенных символов. Аргумент структуры версий расширенных символов имеет _wfinddata_t тип данных, определенный в IO.h и в Wchar.h . Поля этого типа данных совпадают с полями _finddata_t типа данных, за исключением того, что в name _wfinddata_t поле имеет тип, а не тип wchar_t char . _wfindfirst В противном случае и _wfindnext поведение идентично _findfirst и _findnext .

Функции _findfirst и _findnext используют 64-разрядный тип времени. Если необходимо использовать прежний 32-разрядный тип времени, можно определить _USE_32BIT_TIME_T . Версии этих функций с 32 суффиксом в их именах используют 32-разрядный тип времени, а те, с 64 суффиксом, используют 64-разрядный тип времени.

Функции _findfirst32i64 , _findnext32i64 , _wfindfirst32i64 и _wfindnext32i64 также ведут себя идентично версиям этих функций с 32-разрядным типом времени, за исключением того, что они используют и возвращают 64-разрядные значения длины файлов. Функции _findfirst64i32 , _findnext64i32 , _wfindfirst64i32 и _wfindnext64i32 используют 64-разрядный тип времени, но 32-разрядные значения длины файлов. Эти функции используют соответствующие варианты типа _finddata_t , в которых поля имеют разные типы для времени и размера файла.

_finddata_t фактически представляет собой макрос, который преобразуется в _finddata64i32_t (или _finddata32_t , если определена константа _USE_32BIT_TIME_T ). В следующей таблице приведены сводные сведения об этих вариантах _finddata_t :

Структура Тип времени Тип размера файла
_finddata_t , _wfinddata_t __time64_t _fsize_t
_finddata32_t , _wfinddata32_t __time32_t _fsize_t
__finddata64_t , _wfinddata64_t __time64_t __int64
_finddata32i64_t , _wfinddata32i64_t __time32_t __int64
_finddata64i32_t , _wfinddata64i32_t __time64_t _fsize_t

_fsize_t представляет собой typedef для unsigned long (32 бита).

Пример

// crt_find.c // This program uses the 32-bit _find functions to print // a list of all files (and their attributes) with a .C extension // in the current directory. #include #include #include #include int main( void ) < struct _finddata_t c_file; intptr_t hFile; // Find first .c file in current directory if( (hFile = _findfirst( "*.c", &c_file )) == -1L ) printf( "No *.c files in current directory!\n" ); else < printf( "Listing of .c files\n\n" ); printf( "RDO HID SYS ARC FILE DATE %25c SIZE\n", ' ' ); printf( "--- --- --- --- ---- ---- %25c ----\n", ' ' ); do < char buffer[30]; printf( ( c_file.attrib & _A_RDONLY ) ? " Y " : " N " ); printf( ( c_file.attrib & _A_HIDDEN ) ? " Y " : " N " ); printf( ( c_file.attrib & _A_SYSTEM ) ? " Y " : " N " ); printf( ( c_file.attrib & _A_ARCH ) ? " Y " : " N " ); ctime_s( buffer, _countof(buffer), &c_file.time_write ); printf( " %-12s %.24s %9ld\n", c_file.name, buffer, c_file.size ); >while( _findnext( hFile, &c_file ) == 0 ); _findclose( hFile ); > > 
Listing of .c files RDO HID SYS ARC FILE DATE SIZE --- --- --- --- ---- ---- ---- N N N Y blah.c Wed Feb 13 09:21:42 2002 1715 N N N Y test.c Wed Feb 06 14:30:44 2002 312 

Path. Get File Name Метод

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Перегрузки

Возвращает имя и расширение файла из пути к файлу, представленного диапазоном символов только для чтения.

Возвращает имя файла и расширение указанной строки пути.

GetFileName(ReadOnlySpan)

Возвращает имя и расширение файла из пути к файлу, представленного диапазоном символов только для чтения.

public: static ReadOnlySpan GetFileName(ReadOnlySpan path);
public static ReadOnlySpan GetFileName (ReadOnlySpan path);
static member GetFileName : ReadOnlySpan -> ReadOnlySpan
Public Shared Function GetFileName (path As ReadOnlySpan(Of Char)) As ReadOnlySpan(Of Char)
Параметры

Диапазон только для чтения, содержащий путь, из которого нужно получить имя и расширение файла.

Возвращаемое значение

Символы, следующие за последним символом разделителя каталогов в пути path .

Комментарии

Возвращаемый диапазон только для чтения содержит символы пути, следующие за последним разделителем в path . Если последний символ в path является разделителем тома или каталога, метод возвращает ReadOnlySpan.Empty. Если path не содержит символа-разделителя, метод возвращает path .

См. также раздел

Применяется к

GetFileName(String)

Возвращает имя файла и расширение указанной строки пути.

public: static System::String ^ GetFileName(System::String ^ path);
public static string GetFileName (string path);
public static string? GetFileName (string? path);
static member GetFileName : string -> string
Public Shared Function GetFileName (path As String) As String
Параметры

Строка пути, из которой нужно получить имя файла и расширение.

Возвращаемое значение

Символы, следующие за последним символом разделителя каталогов в пути path . Если последним символом параметра path является символ разделения тома или каталога, этот метод возвращает Empty. Если значением параметра path является null , метод возвращает null .

Исключения

платформа .NET Framework и .NET Core версий старше 2.1: path содержит один или несколько недопустимых символов, определенных в GetInvalidPathChars().

Примеры

В следующем примере показано поведение метода на GetFileName классической платформе Windows.

String^ fileName = "C:\\mydir\\myfile.ext"; String^ path = "C:\\mydir\\"; String^ result; result = Path::GetFileName( fileName ); Console::WriteLine( "GetFileName('') returns ''", fileName, result ); result = Path::GetFileName( path ); Console::WriteLine( "GetFileName('') returns ''", path, result ); // This code produces output similar to the following: // // GetFileName('C:\mydir\myfile.ext') returns 'myfile.ext' // GetFileName('C:\mydir\') returns '' 
string fileName = @"C:\mydir\myfile.ext"; string path = @"C:\mydir\"; string result; result = Path.GetFileName(fileName); Console.WriteLine("GetFileName('') returns ''", fileName, result); result = Path.GetFileName(path); Console.WriteLine("GetFileName('') returns ''", path, result); // This code produces output similar to the following: // // GetFileName('C:\mydir\myfile.ext') returns 'myfile.ext' // GetFileName('C:\mydir\') returns '' 
Dim fileName As String = "C:\mydir\myfile.ext" Dim pathname As String = "C:\mydir\" Dim result As String result = Path.GetFileName(fileName) Console.WriteLine("GetFileName('') returns ''", fileName, result) result = Path.GetFileName(pathname) Console.WriteLine("GetFileName('') returns ''", pathname, result) ' This code produces output similar to the following: ' ' GetFileName('C:\mydir\myfile.ext') returns 'myfile.ext' ' GetFileName('C:\mydir\') returns '' 

Комментарии

Возвращаемое значение равно , null если путь к файлу — null .

Символы разделителя, используемые для определения начала имени файла: DirectorySeparatorChar и AltDirectorySeparatorChar.

Так как \ является законным именем файла в Unix, GetFileName выполнение на платформах под управлением Unix не может правильно возвращать имя файла из пути на основе Windows, например C:\mydir\myfile.ext, но GetFileName выполнение на платформах под управлением Windows может правильно возвращать имя файла из пути на основе Unix, например /tmp/myfile.ext, поэтому поведение GetFileName метода не является строго одинаковым на платформах под управлением Unix и Windows.

Список распространенных задач ввода-вывода см. в разделе Общие задачи ввода-вывода.

См. также раздел

  • Форматы путей к файлам в системах Windows
  • Файловый и потоковый ввод-вывод
  • Практическое руководство. Чтение текста из файла
  • Практическое руководство. Запись текста в файл

Как получить имя файла java

Чтобы получить имя файла в Java , можно использовать метод getName() класса File .

File file = new File("C:/path/to/myfile.txt"); String fileName = file.getName(); System.out.println(fileName); // => myfile.txt 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *