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

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

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

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

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

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 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;
}
ForEveR
В астрале
Эксперт С++
7969 / 4731 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 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
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;
 
}
Yandex
Объявления
19.11.2012, 04:39     Как определить, есть ли файл на диске. Проверка двух файлов
Ответ Создать тему
Опции темы

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