Не работает класс file

Класс для работы с файлами

Разработать класс для управления текстовым файлом.
Основные свойства класса:
a. Имя файла
b. Размер файла
c. Расположение файла
d. Дата создания файла
e. Содержимое файла (в массиве строк)
f. Признак открытого (или закрытого файла)
Основные методы класса:
a. Получить-установить Имя файла
b. Получить размер файла
c. Получить расположение файла
d. Получить дату создания файла
e. Получить признак открытого (или закрытого файла)
f. Открыть файл
g. Закрыть файл
h. Загрузить содержимое файла (в массив строк)
i. Отобразить содержимое файла на экране

У меня есть код, но не работает вывод содержимого файла на экран, не могу понять в чем проблема. Помогите пожалуйста!

Класс для работы с файлами
День добрый. Столкнулся со следующей проблемой. Задание: создать класс, инкапсулирующий работу с.

Класс для работы с файлами
Нужно реализовать класс для работы с файлами, надо перегрузить оператор >> ,чтобы можно было.

Мой класс для работы с файлами
Здравствуйте! Я попробовал сделать свой класс для работы с файлами и показать его здесь с целью.

Класс для работы с файлами
Люди добрые, подскажите в каком конце искать работу с файлами, такую как копирование, удаление.

Класс для работы с текстовыми файлами С++
Создать иерархию с 2 классов, с 2 конструкторами для работы с текстовым файлом. Нужно наполнить.

Нужен класс для работы с файлами
Требуется PHP класс работы с файлами: в первую очередь — синтаксис и алгоритмы. Готовая реализация.

Нужен класс для работы с файлами
Не как не могу найти нормальный класс для работы с файлами, а ведь очень нужен, если такой есть, то.

Класс для работы с файлами. Наследование
Здравствуйте. Имеется класс для работы с обычными текстовыми файлами, но никак не удается написать.

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

Источник

Не работает обьявление шаблона класса в заголовочном файле с определением методов в отдельном файле реализации

Например у меня есть Test.h в котором определен шаблон класса Test и в Test.cpp определены методы и конструкторы класса причем неявным образом,а вот уже где нибудь в main.cpp я инициализирую Test testValue . Ничего не сработает, так как компилятор не знает, как определить мои Type в Test.cpp . Как можно «схитрить» ( Не используя дополнительного третьего файла типа .inl или что нибудь еще)

Test.h

Test.cpp

main.cpp

3 ответа 3

Есть один способ, но неудобный.

В test.cpp можно явно инстанцировать class Test для Type = int , добавив в конец файла:

Читайте также:  Как настроить смарт часы аймото про

Неудобство в том, что в .cpp файле вы должны перечислить все наборы шаблонных аргументов, с которыми планируете использовать класс.

Это — самое последнее средство. Намного лучше будет послушать @Harry и просто держать дефиниции шаблонных функций в заголовочных файлах.

Уж сколько раз твердили миру. (с)

Не помещайте определения шаблонных функций/классов в отдельные .cpp-файлы. Размещайте все только в заголовочных файлах — иначе инстанцирования не происходит, вот и имеем, что имеем.

Совет от Страуструпа (A Tour of C++, adv. 7-6):

Раздельной компиляции шаблонов нет: вы должны включать с помощью директивы #include определения шаблонов в каждую единицу трансляции, которая их использует.

Вот подумайте сами — откуда при компиляции файла Test.cpp компилятору знать, что (с каким параметром шаблона) будет инстанцироваться в другом файле?

А в этом другом файле (main.cpp) — откуда знать, как инстанцировать шаблон, если нет доступа к коду реализации?

Обходной путь — указать в файле реализации шаблона явное инстанцирование необходимых типов

возможен, но очень уж он неудобный — в следующий раз в main.cpp понадобится класс для нового типа, и надо будет тут же вносить его в test.cpp . Еще хуже, если какой-то тип станет ненужен, но будет продолжать инстанцироваться и линковаться.

Во-первых, неработоспособность вашего подхода никак не связана с тем, что «компилятор не знает, как определить мои Type в Test.cpp». Вы продолжаете это повторять из вопроса в вопрос, но никакого отношения к сути проблемы это не имеет.

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

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

Источник

Конструктор класса File не создает файл на диске

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

File f = new File(«E://test.txt»); в интернете много, но почему-то у меня на JDK 8 оно не работает.

В итоге, вот, что получается:

Файла — нет. Знаю, что если набрать в try f.createNewFile(); то все будет ок, но раз приводят примеры без него, то значит должно работать.

2 ответа 2

Конструктор класса java.io.File создаёт объект, представляющий файл на диске. Но конструктор не создаёт этот файл, а предоставляет некоторый интерфейс, который затем позволяет что-либо сделать. Например, проверить существует ли файл. Проще говоря, объект класса File после создания представляет собой только имя файла, независимо от его физического существования на диске.

Читайте также:  Что будет если настроить файл подкачки

Как верно замечено в вопросе, чтобы создать файл нужно вызвать метод createNewFile . Или же передавать объект типа File каким-либо функциям для дальнейшей работы. Но ещё раз повторю, что конструктор сам никаких новых файлов на диске не создаёт.

На мой взгляд, это недостаток наименования класса как File , поскольку по сути этот класс является абстрактным представлением пути к файлу или директории (из документации):

An abstract representation of file and directory pathnames.

Также добавлю цитату из книги «Thinking in Java» (4 издание, Bruce Eckel, в переводе):

Название класса File обманчиво. Кажется, что он представляет файл, но на самом деле это не так. На самом деле, более правильным названием было бы FilePath — путь к файлу. Он представляет собой реально либо имя конкретного файла, либо имя группы файлов в каталоге. Если это группа файлов, вы можете получить их все, используя метод list( ) , который возвращает массив строк. Возврат именно массива, а не одного из более удобных классов-контейнеров, имеет свой смысл: количество элементов фиксировано, а если вам нужен другой список файлов, вы просто создаёте другой объект типа File

Если посмотреть исходный код конструктора, то он очень прост:

Как видим, никакого файла на диске не создается.

Источник

Что делать, если не работает CSS-класс?

Я пишу css-правило

но на странице ничего не меняется: цвет остаётся серым.

1 ответ 1

Браузеры предоставляют отличные инструменты для отладки css. Не надо ждать, пока кто-то угадает, в чём проблема. Надо просто взять и посмотреть, что же происходит. Покажу на примере Хрома.

Сначала надо обновить страницу со сбросом кэша.
В большинстве браузеров это Ctrl + F5 .

Если не помогло, то по исследуем по следующему плану:

Щёлкнуть проблемный элемент правой кнопкой и выбрать пункт Исследовать элемент :

Появится панель отладки, на которой на вкладке Elements выделен кликнутый элемент. Если нужен другой, можно перейти к нему. Затем следует обратить внимание на вкладки Styles и Computed :

Если в element.style есть интересующее свойство, то

  • если в html-разметке прописан стиль в атрибуте style , удаляем оттуда лишнее
  • если нет, кончаем читать этот ответ и переходим к отладке скриптов, которые этот стиль выставляют (либо перебиваем !important ом, что делать крайне не рекомендуется)

На вкладке Styles надо найти свой селектор.
Если его там нет, то проблема в опечатке или подключении css-файла.

Как видим, свойство зачёркнуто, но восклицательного знака (говорящего о неверном значении) нет. Это означает, что есть другое правило, имеющее больший приоритет. В простых случаях достаточно посмотреть на вышестоящие правила и понять, что там надо. В более запутанных стоит заглянуть на вкладку Computed и посмотреть, какие вообще значения влияют:

Читайте также:  Не работает электронный тонометр что делать

Здесь видно, что селектор .so-header .navigation .-link перебивает наше правило.
Кликом по стрелочке можно перейти к самому правилу, но нам это сейчас не нужно.

Теперь мы знаем, что приоритет используемого правила 0 id, 3 класса, 0 тегов .
Если мы уверены, что наше правило идёт после переопределяемого, то нам достаточно той же силы. Если нет, то надо побольше.

Самый простой способ — это сделать так:

Но руководствуясь здравым смыслом, стоит всё-таки сделать так:

Если всё равно не работает.

На шаге 6 стоило заглянуть в переопределяющий стиль — возможно, в нём есть !important :

В таком случаем нам тоже придётся его использовать:

Если проблемы возникают только при печати, надо включить эмуляцию @media print . Для этого надо нажать в девтулах Ctrl + Sift + P и в появившемся окне написать media:

после чего выбрать строчку Emulate CSS print media.

Источник

Мой класс для работы с файлами

Здравствуйте! Я попробовал сделать свой класс для работы с файлами и показать его здесь с целью узнать, что я в нем сделал не так

Класс называется File.
В нем один закрытый член — fstream file. Это файл, с которым программист будет работать.

У класса присутствуют следующие функции:

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

Так каким же образом можно указать параметр mode функции open? Первый способ: такой же, как и у функции fstream::open:

С радостью выслушаю все пожелания и замечания.

Добавлено через 17 часов 30 минут
Немного подкорректировал стиль названий данных: названия переменных начинаются, как и раньше, с маленькой буквы, а названия функций теперь начинаются с большой буквы.

Добавил новую функцию.

Класс для работы с файлами
День добрый. Столкнулся со следующей проблемой. Задание: создать класс, инкапсулирующий работу с.

Класс: создать класс Fraction для работы с дробными числами
Необходимо создать класс Fraction для работы с дробными числами. Число должно быть представлено.

Создать базовый класс — Array и производный класс — Money для работы денежной суммы
ПОМОГИТЕ, ПОЖАЛУЙСТА, С ЗАДАЧЕЙ Создать базовый класс — Array и производный класс — Money для.

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

Про передачу по ссылке я тоже думал. Вначале я создал по 2 экземпляра каждой функции: один для работы с указателями, другой — для работы со ссылками. Но после решил, что смысл у этих функций будет один и тот же, хотя программисту передача по ссылке будет удобнее, и удалил вариант с ссылками.

Источник

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