Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
rambayke
2 / 2 / 0
Регистрация: 31.07.2012
Сообщений: 71
#1

Как определить, есть ли файл на диске. Проверка двух файлов - C++

16.11.2012, 05:49. Просмотров 1135. Ответов 3
Метки нет (Все метки)

Всем привет!
Задача: проверить существование двух файлов и не пустые ли они.
проверить существование одного файла:
http://www.rsdn.ru/article/qna/baseserv/fileex.xml
все эти способы работают для одного файла. а проверить существование второго файла не получается. 1 файл "найден", а 2 файл "не найден", хотя и существует. почему? пробовал для каждого файла разные методы, все равно результат 0.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2012, 05:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как определить, есть ли файл на диске. Проверка двух файлов (C++):

Проверка наличия трех текстовых файлов на диске и объединения их в один файл - CMD/BAT
Помогите плз с заданием. Создать два пакетных файла, реализующих следующие задачи: 1. Проверка наличия трех текстовых файлов на диске и...

Проверка наличия трёх текстовых файлов на диске и объединение их в один файл в случае существования каждого - CMD/BAT
Проверка наличия трех текстовых файлов на диске и объединения их в один файл. Как сие воплотить? :sorry:

Как в макросе (Excel)определить есть ли нужный каталог на диске? - VBA
Народ!!! Подскажите, как в макросе (Excel)определить есть ли нужный каталог на диске. И,если его нет, то создать его.

Проверка системных файлов на диске С - Windows XP
зачем при запуска выйдет на екран вот такой, Checking file system on C: The type of the file system is NTFS. a disk check has...

Проверка целостности (сrc сумм) файлов на диске - C#
В общем задание следующее: требуется проверить целостность файла(ов), которые записаны на диске. Как я понял нужно: 1 вытащить crc...

В заданном каталоге определить, какие имена файлов есть жесткими ссылками на тот же файл - Bash
В заданном каталоге определить, какие имена файлов есть жесткими ссылками на тот же файл. Заранеей спасибо)

3
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.11.2012, 08:59 #2
Вот так не работает?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <io.h>
#include <iostream>
 
bool FileExists(const char *fname)
{
    return access(fname, 0) != -1;
}
 
int main()
{
    if (FileExists("C:\\Users\\1.txt"))
    std::cout << "Yes" << std::endl;
    else std::cout << "No" << std::endl;
 
    if (FileExists("C:\\Users\\2.txt"))
    std::cout << "Yes" << std::endl;
    else std::cout << "No" << std::endl;
 
 
    return 0;
}
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
16.11.2012, 11:47 #3
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
25
26
27
28
29
30
31
32
33
34
#include <boost/filesystem.hpp>
#include <iostream>
#include <string>
 
int main()
{
   auto files = {"tst_dir/file1", "tst_dir/file2"};
   for (const auto& f : files)
   {
      const auto path = boost::filesystem::path(f);
      if (boost::filesystem::exists(path))
      {
         if (boost::filesystem::is_regular_file(path))
         {
            if (boost::filesystem::file_size(path) != 0)
            {
               std::cout << "File " << path.generic_string() << " exists" << std::endl;
            }
            else
            {
               std::cout << "File " << path.generic_string() << " exists, but is empty" << std::endl;
            }
         }
         else
         {
            std::cout << path.generic_string() << " is not regular file" << std::endl;
         }
      }
      else
      {
         std::cout << path.generic_string() << " not exists" << std::endl;
      }
   }
}
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
forever@pterois:~/My_pro1/cpp_pro/tst_dir$ ls -l -h
итого 0
-rw-r--r-- 1 forever user 0 нояб. 16 11:43 file1
-rw-r--r-- 1 forever user 0 нояб. 16 11:43 file2
forever@pterois:~/My_pro1/cpp_pro$ ./new 
File tst_dir/file1 exists, but is empty
File tst_dir/file2 exists, but is empty
 
forever@pterois:~/My_pro1/cpp_pro/tst_dir$ ls -l -h
итого 4,0K
-rw-r--r-- 1 forever user 2 нояб. 16 11:46 file1
-rw-r--r-- 1 forever user 0 нояб. 16 11:43 file2
forever@pterois:~/My_pro1/cpp_pro$ ./new 
File tst_dir/file1 exists
File tst_dir/file2 exists, but is empty
 
forever@pterois:~/My_pro1/cpp_pro/tst_dir$ ls -l -h
итого 0
-rw-r--r-- 1 forever user 0 нояб. 16 11:43 file2
forever@pterois:~/My_pro1/cpp_pro$ ./new 
tst_dir/file1 not exists
File tst_dir/file2 exists, but is empty
 
forever@pterois:~/My_pro1/cpp_pro/tst_dir$ ls -l -h
итого 4,0K
drwxr-xr-x 2 forever user 4,0K нояб. 16 11:47 file1
-rw-r--r-- 1 forever user    0 нояб. 16 11:43 file2
forever@pterois:~/My_pro1/cpp_pro$ ./new 
tst_dir/file1 is not regular file
File tst_dir/file2 exists, but is empty
1
rambayke
2 / 2 / 0
Регистрация: 31.07.2012
Сообщений: 71
19.11.2012, 04:39  [ТС] #4
почему то оба метода вызвали ошибку. я сделал примитивно:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
DWORD CTwoAppDlg::FileExists(CString filename)
{
DWORD sz = 0;
 
WIN32_FIND_DATA wfd;
 
HANDLE searchHandle = ::FindFirstFile((LPCTSTR)"D:\\*.txt", &wfd);
 
if(searchHandle != INVALID_HANDLE_VALUE)
    {
        while(::FindNextFile(searchHandle, &wfd) != 0)
        {
            if (filename.Compare(wfd.cFileName) == 0)
            sz = wfd.nFileSizeLow;//razmer faila v baitah
        }
    
        FindClose(searchHandle);
    }
 
return sz;
 
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2012, 04:39
Привет! Вот еще темы с ответами:

Проверка наличия на диске в указанном каталоге перечисленных в списке файлов и вывод имен отсутствующих - CMD/BAT
Проверка наличия на диске в каталоге, указанном первым параметром КФ файла FNames.txt, содержащего список имен файлов и подкаталогов. Если...

Проверить, есть ли файл на диске - VBA
Привет. Прежде чем вызвать оператор KILL &quot;file&quot; требуется убедиться, что данный &quot;file&quot; на диске есть. Есть ли для этой задачки...

Сохранение в указанный текстовый файл имен всех исполняемых файлов на диске - CMD/BAT
Помогите пожалуйста!надо написать такой командный файл чтобы он сохранял в указанный текстовый файл имена всех исполняемых файлов на диске....

Проверка идентичности двух файлов - Pascal ABC
Имеются два текстовых файла. Проверите, совпадают ли эти файлы. В случае отрицательного ответа выведите на экран порядковые номера первых...


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

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
19.11.2012, 04:39
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru