0 / 0 / 0
Регистрация: 17.10.2017
Сообщений: 72
1

Как определить тип файл\папку

17.10.2017, 17:07. Показов 5437. Ответов 9
Метки нет (Все метки)

Здравствуйте, есть такая задача: Считывается путь в переменную строкового типа(или wstring). Это может быть файл, а может папка.
Надо определить,папка это или файл.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.10.2017, 17:07
Ответы с готовыми решениями:

Как создать папку (а не файл) в VS2003?
как создать паку (а не файл) в с++? файл я создаю так - ofstream input_file("file.txt") ; а файл в...

Как найти файл в определенной папке и скопировать в другую папку?
Появилась необходимость искать нужный файл в папке и копировать его в другую папку. Есть вот...

Как определить тип вектора в c++
здравствуйте, нужно создать псевдоним типа для упрощения записи, например есть массив vector...

Как определить тип данных?
Как определить тип данных переменной?

9
Заблокирован
17.10.2017, 17:19 2
C++
1
2
3
4
5
6
7
8
9
string path = @"путь";
FileInfo fi = new FileInfo(path);
if (fi.Exists){
   // файл
}
else{
   DirectoryIndo di = new DirectoryInfo(path);
   //аналогично
}
0
29 / 36 / 8
Регистрация: 16.10.2017
Сообщений: 137
17.10.2017, 17:25 3
http://en.cppreference.com/w/c... _directory
0
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
17.10.2017, 18:04 4
Gagoose, C#?
0
3542 / 2100 / 390
Регистрация: 09.09.2017
Сообщений: 8,650
17.10.2017, 18:44 5
man 2 stat
man 7 inode


Добавлено через 15 секунд
man 2 stat
man 7 inode
0
0 / 0 / 0
Регистрация: 17.10.2017
Сообщений: 72
21.10.2017, 15:12  [ТС] 6
FileInfo - идентификатор не определен.
Какой заголовочный надо добавить? c++
0
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
21.10.2017, 16:43 7
Mobong, код с FileInfo написан на C#, потому компилировать не будет.
0
0 / 0 / 0
Регистрация: 17.10.2017
Сообщений: 72
21.10.2017, 16:47  [ТС] 8
Хм жаль. Есть возможность реализовать нечто подобное на c++ ?
0
3542 / 2100 / 390
Регистрация: 09.09.2017
Сообщений: 8,650
21.10.2017, 18:24 9
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
 
       
int main (int argc, char **argv){
  struct stat buf;
  if(argc != 2){
    printf("Usage: %s [path]\n",argv[0]);
    return 1;
  }
  lstat(argv[1], &buf);
  
  if(S_ISREG(buf.st_mode)){
    printf("File\n");
  }else if(S_ISDIR(buf.st_mode)){
    printf("Directory\n");
  }else if(S_ISLNK(buf.st_mode)){
    printf("Symbolic link\n");
  }
}
$ gcc main.c -Wall -gdwarf-2 -Os
$ ./a.out main.c
File
$ ./a.out PlayOnLinux\'s\ virtual\ drives
Symbolic link
$ ./a.out tmp
Directory


Добавлено через 15 секунд
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
 
       
int main (int argc, char **argv){
  struct stat buf;
  if(argc != 2){
    printf("Usage: %s [path]\n",argv[0]);
    return 1;
  }
  lstat(argv[1], &buf);
  
  if(S_ISREG(buf.st_mode)){
    printf("File\n");
  }else if(S_ISDIR(buf.st_mode)){
    printf("Directory\n");
  }else if(S_ISLNK(buf.st_mode)){
    printf("Symbolic link\n");
  }
}
$ gcc main.c -Wall -gdwarf-2 -Os
$ ./a.out main.c
File
$ ./a.out PlayOnLinux\'s\ virtual\ drives
Symbolic link
$ ./a.out tmp
Directory
0
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
21.10.2017, 19:17 10
Лучший ответ Сообщение было отмечено Mobong как решение

Решение

Вам же человек уже написал) Если нет <experimental/filesystem>, то юзайте boost::filesystem.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <experimental/filesystem>
#include <string>
#include <iostream>
 
int main()
{
    std::wstring pathDirWindows = L"C:/Windows";
    std::experimental::filesystem::path dirWindows(pathDirWindows);
    if (std::experimental::filesystem::is_directory(pathDirWindows))
        std::cout << dirWindows << " - is directory." << std::endl;
    else
        std::cout << dirWindows << " - is other." << std::endl;
    
 
    std::wstring pathfileExplorer = L"C:/Windows/explorer.exe";
    std::experimental::filesystem::path fileExplorer(pathfileExplorer);
    if (std::experimental::filesystem::is_regular_file(fileExplorer))
        std::cout << fileExplorer << " - is file." << std::endl;
    else
        std::cout << fileExplorer << " - is other." << std::endl;
 
    std::cin.get();
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.10.2017, 19:17
Помогаю со студенческими работами здесь

Как определить тип переменной?
isdigit тока нашел. а как узнать char или int или есть типа is_array? конечно можно все...

Как определить тип файла?
Хочу написать программу, которая из кучи различных файлов в папке удаляет файлы определённого типа,...

Как bat-ником перенести файл в папку, при том так чтобы это было не копирование файла в папку?
Не копия файла в папке, а сам файл. Этот код копирует файлы и переносит в папку Copy, а мне нужно...

Как определить тип переменной, ссылающейся на определённый класс? Нужен именно тип, а не ссылка на обьект!
interface HowDefineMyType { void info(); } class A implements HowDefineMyType { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru