Я хочу использовать системный вызов write () без удаления данных из файла [duplicate]

Статические методы могут использоваться, если

  • Не нужно выполнять действие над экземпляром (методы утилиты). Как упоминалось в нескольких из приведенных выше ответов в этом сообщении, преобразование миль в километры, или расчета температуры от Фаренгейта до Цельсия и наоборот. В этих примерах с использованием статического метода ему не нужно создавать экземпляр целого нового объекта в кучевой памяти. Рассмотрим ниже
    1. new ABCClass(double farenheit).convertFarenheitToCelcium() 
    2. ABCClass.convertFarenheitToCelcium(double farenheit)
    
    , первый создает новый класс для каждого метода invoke, Performance, Practical . Примерами являются класс Math и Apache-Commons StringUtils ниже:
    Math.random()
    Math.sqrt(double)
    Math.min(int, int)
    StringUtils.isEmpty(String)
    StringUtils.isBlank(String)
    
  • Один хочет использовать как простую функцию. Входы явно передаются и получают данные результата в качестве возвращаемого значения. Наследование, объектная инсталляция не возникает. Краткая, читаемая .

ПРИМЕЧАНИЕ. Немногие люди возражают против проверки статических методов, но статические методы также могут быть протестированы! С помощью jMockit можно издеваться над статическими методами. Тестируемость . Пример ниже:

new MockUp<ClassName>() {
    @Mock
    public int doSomething(Input input1, Input input2){
        return returnValue;
    }
};
0
задан user2158031 12 March 2013 в 08:54
поделиться

3 ответа

В стандарте C нет возможности вставлять новые данные в определенное место в файле.

Единственными двумя параметрами в plain C являются:

  1. Создать временную файл, скопировать данные старого файла до точки вставки в файл temp, записать новые данные в файл temp, скопировать остальные данные старого файла в файл temp, переименовать временный файл в имя старого файла.
  2. Определите, сколько новых данных необходимо вставить, переместите (путем копирования) все данные из точки вставки на эту сумму, напишите новые данные в точке ввода.

Для выполнения вставки данных в произвольном месте внутри файла могут существовать функции, специфичные для ОС. Но, опять же, не в стандартной библиотеке C, как определено стандартом C.

3
ответ дан Alexey Frunze 20 August 2018 в 09:26
поделиться

:

  1. Создайте временный файл
  2. Прочитайте каждую строку из исходного файла и напишите во временный файл, разобрав его по ходу
  3. Затем вставьте новую строку после того, как вы нашли идентификатор, после которого вы хотите, чтобы новая строка была вставлена.
  4. записать все оставшиеся строки из исходного файла
  5. удалить источник file
  6. переименовать временный файл в имя исходного файла.
  7. отпраздновать!
2
ответ дан Aniket Inge 20 August 2018 в 09:26
поделиться

Единственный вариант, который вам нужно добавить в середине файла без перезаписи старых данных, - это перемещать вручную все данные, следующие за положением, в которое вы хотите добавить файл.

2
ответ дан Ivaylo Strandjev 20 August 2018 в 09:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: