Почему принято выполнять операцию закрытия файла после окончания работы с файлом

Обновлено: 03.07.2024

Существует несколько способов представления вывода программы; данные могут быть распечатаны в удобочитаемой форме или записаны в файл для будущего использования. В этой главе обсуждаются некоторые возможности.

7.1. Причудливое форматирование вывода¶

До сих пор мы встречались с двумя способами записи значений: операторы-выражения и функция print(). (Третий способ — использовать метод write() файловых объектов; на стандартный выходной файл можно ссылаться как на sys.stdout . Дополнительные сведения об этом см. в Справочнике по библиотеке.)

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

Чтобы использовать форматированные строковые литералы , начните строку с f или F перед открывающей кавычкой или тройной кавычкой. Внутри этой строки вы можете написать выражение Python между символами < и >, которое может ссылаться на переменные или литеральные значения.

Строковый метод str.format() требует больше ручного труда. Вы по-прежнему будете использовать < и >, чтобы отметить, где переменная будет заменена, и можете предоставить подробные директивы форматирования, но вам также потребуется предоставить информацию для форматирования.

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

Если вам не нужен красивый вывод, а просто нужно быстро отобразить некоторые переменные в целях отладки, вы можете преобразовать любое значение в строку с помощью функций repr() или str().

Функция str() предназначена для возврата представлений значений, которые достаточно удобочитаемы для человека, в то время как repr() предназначена для создания представлений, которые могут быть прочитаны интерпретатором (или вызовет SyntaxError, если нет эквивалентного синтаксиса). ). Для объектов, которые не имеют конкретного представления для потребления человеком, str() вернет то же значение, что и repr(). Многие значения, такие как числа или структуры, такие как списки и словари, имеют одинаковое представление с использованием любой функции. Строки, в частности, имеют два различных представления.

Модуль string содержит класс Template, который предлагает еще один способ подстановки значений в строки, используя заполнители, такие как $x, и заменяя их значениями из словаря, но предлагает гораздо меньший контроль над форматированием.

7.1.1. Форматированные строковые литералы¶

Форматированные строковые литералы (также называемые для краткости f-строками) позволяют включать значение выражений Python в строку, добавляя к строке префикс f или F и записывая выражения как .

За выражением может следовать необязательный описатель формата. Это позволяет лучше контролировать форматирование значения. В следующем примере число пи округляется до трех знаков после запятой:

Передача целого числа после ':' приведет к тому, что ширина этого поля будет минимальной. Это полезно для выравнивания столбцов.

Для преобразования значения перед его форматированием можно использовать другие модификаторы. '!a' применяет ascii() , '!s' применяет str() , а '!r' применяет repr() :

Справочные сведения об этих спецификациях форматов см. в справочном руководстве по мини-языку спецификации форматов .

7.1.2. Метод String format()¶

Основное использование метода str.format() выглядит следующим образом:

Квадратные скобки и символы внутри них (называемые полями формата) заменяются объектами, переданными в метод str.format(). Число в скобках может использоваться для обозначения позиции объекта, переданного в метод str.format().

Если аргументы ключевого слова используются в методе str.format(), на их значения ссылаются, используя имя аргумента.

Позиционные и ключевые аргументы можно произвольно комбинировать:

Если у вас есть очень длинная строка формата, которую вы не хотите разбивать, было бы неплохо, если бы вы могли ссылаться на переменные, которые нужно форматировать, по имени, а не по положению. Это можно сделать, просто передав словарь и используя квадратные скобки '[]' для доступа к ключам.

Это также можно сделать, передав таблицу в качестве аргументов ключевого слова с нотацией «**».

Это особенно полезно в сочетании со встроенной функцией vars() , которая возвращает словарь, содержащий все локальные переменные.

Например, следующие строки создают аккуратно выровненный набор столбцов, содержащий целые числа, их квадраты и кубы:

Полный обзор форматирования строк с помощью str.format() см. в разделе Синтаксис форматирования строк.

7.1.3. Ручное форматирование строк¶

Вот та же таблица квадратов и кубов, отформатированная вручную:

(Обратите внимание, что один пробел между каждым столбцом был добавлен способом работы print(): он всегда добавляет пробелы между своими аргументами.)

Ул.Метод rjust() строковых объектов выравнивает строку по правому краю в поле заданной ширины, дополняя ее пробелами слева. Есть похожие методы str.ljust() и str.center(). Эти методы ничего не пишут, они просто возвращают новую строку. Если входная строка слишком длинная, они не усекают ее, а возвращают без изменений; это испортит макет вашего столбца, но обычно это лучше, чем альтернатива, которая будет лгать о значении. (Если вам действительно нужно усечение, вы всегда можете добавить операцию среза, как в x.ljust(n)[:n] .)

Есть еще один метод, str.zfill() , который дополняет числовую строку слева нулями. Он понимает знаки плюс и минус:

7.1.4. Старое форматирование строк¶

Операция % (по модулю) также может использоваться для форматирования строк. При заданных значениях % 'string' экземпляры % в строке заменяются нулем или более элементами values ​​. Эта операция широко известна как интерполяция строк. Например:

Дополнительную информацию можно найти в разделе "Форматирование строк в стиле printf".

7.2. Чтение и запись файлов¶

open() возвращает объект файла и чаще всего используется с двумя аргументами: open(filename, mode) .

Первый аргумент — это строка, содержащая имя файла. Второй аргумент — это еще одна строка, содержащая несколько символов, описывающих способ использования файла. режим может быть 'r', когда файл будет только читаться, 'w' только для записи (существующий файл с тем же именем будет стерт), а 'a' открывает файл для добавления; любые данные, записанные в файл, автоматически добавляются в конец. 'r+' открывает файл как для чтения, так и для записи. Аргумент mode является необязательным; 'r' будет подразумеваться, если он опущен.

Обычно файлы открываются в текстовом режиме, то есть вы читаете и записываете строки из файла и в него, закодированные в определенной кодировке. Если кодировка не указана, значение по умолчанию зависит от платформы (см. open()). 'b', добавленный к режиму, открывает файл в бинарном режиме: теперь данные считываются и записываются в виде байтовых объектов. Этот режим следует использовать для всех файлов, не содержащих текста.

В текстовом режиме по умолчанию при чтении окончания строк для конкретной платформы ( \n в Unix, \r\n в Windows) преобразуются в просто \n . При записи в текстовом режиме по умолчанию вхождения \n преобразуются обратно в окончания строк, зависящие от платформы. Эта скрытая модификация файловых данных хороша для текстовых файлов, но может повредить двоичные данные, как в файлах JPEG или EXE. Будьте очень осторожны и используйте двоичный режим при чтении и записи таких файлов.

При работе с файловыми объектами рекомендуется использовать ключевое слово with. Преимущество заключается в том, что файл корректно закрывается после завершения его работы, даже если в какой-то момент возникает исключение. Использование with также намного короче, чем написание эквивалентных блоков try - finally:

Если вы не используете ключевое слово with, вам следует вызвать f.close(), чтобы закрыть файл и немедленно освободить все используемые им системные ресурсы.

Вызов f.write() без использования ключевого слова with или вызов f.close() может привести к тому, что аргументы f.write() не будут полностью записаны на диск, даже если программа завершится успешно.

После того, как файловый объект закрыт оператором with или вызовом f.close() , попытки использовать файловый объект автоматически завершатся неудачно.

7.2.1. Методы файловых объектов¶

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

Чтобы прочитать содержимое файла, вызовите функцию f.read(size), которая считывает некоторое количество данных и возвращает их в виде строки (в текстовом режиме) или байтового объекта (в двоичном режиме). размер – необязательный числовой аргумент. Когда size опущен или имеет отрицательное значение, будет прочитано и возвращено все содержимое файла; это ваша проблема, если файл в два раза больше памяти вашей машины. В противном случае считывается и возвращается не более size символов (в текстовом режиме) или size байтов (в двоичном режиме). Если достигнут конец файла, f.read() вернет пустую строку ( '' ).

f.readline() читает одну строку из файла; символ новой строки ( \n ) остается в конце строки и опускается только в последней строке файла, если файл не заканчивается новой строкой. Это делает возвращаемое значение однозначным; если f.readline() возвращает пустую строку, то достигнут конец файла, а пустая строка представлена ​​символом '\n' , строкой, содержащей только одну новую строку.

Для чтения строк из файла можно зациклиться на файловом объекте. Это эффективно использует память, быстро и приводит к простому коду:

Если вы хотите прочитать все строки файла в списке, вы также можете использовать list(f) или f.readlines() .

f.write(string) записывает содержимое string в файл, возвращая количество записанных символов.

Другие типы объектов необходимо преобразовать — либо в строку (в текстовом режиме), либо в байтовый объект (в двоичном режиме) — перед их записью:

f.tell() возвращает целое число, указывающее текущую позицию файлового объекта в файле, представленную количеством байтов от начала файла в двоичном режиме и непрозрачным числом в текстовом режиме.

Чтобы изменить положение файлового объекта, используйте f.seek(offset, wherece) . Положение вычисляется путем добавления смещения к контрольной точке; опорная точка выбирается аргументом откуда. Значение откуда, равное 0, измеряет от начала файла, 1 использует текущую позицию в файле, а 2 использует конец файла в качестве точки отсчета. откуда можно опустить. По умолчанию используется значение 0, при этом в качестве точки отсчета используется начало файла.

В текстовых файлах (тех, которые открываются без ab в строке режима) разрешены только поиски относительно начала файла (за исключением поиска в самом конце файла с помощью seek(0, 2) ) и единственный допустимый Значения offset возвращаются функцией f.tell() или равны нулю. Любое другое значение offset приводит к неопределенному поведению.

Файловые объекты имеют некоторые дополнительные методы, такие как isatty() и truncate(), которые используются реже; обратитесь к справочнику по библиотеке за полным руководством по файловым объектам.

7.2.2. Сохранение структурированных данных с помощью json ¶

Строки можно легко записывать в файл и считывать из него. Числа требуют немного больше усилий, так как метод read() возвращает только строки, которые должны быть переданы функции, такой как int() , которая принимает строку типа «123» и возвращает ее числовое значение 123. Когда вы хотите сохраняя более сложные типы данных, такие как вложенные списки и словари, синтаксический анализ и сериализация вручную усложняются.

Вместо того, чтобы пользователи постоянно писали и отлаживали код для сохранения сложных типов данных в файлы, Python позволяет вам использовать популярный формат обмена данными под названием JSON (нотация объектов JavaScript). Стандартный модуль под названием json может принимать иерархии данных Python и преобразовывать их в строковые представления; этот процесс называется сериализацией. Восстановление данных из строкового представления называется десериализацией. Между сериализацией и десериализацией строка, представляющая объект, могла быть сохранена в файле или данных или отправлена ​​по сетевому соединению на какой-либо удаленный компьютер.

Формат JSON обычно используется современными приложениями для обмена данными. Многие программисты уже знакомы с ним, что делает его хорошим выбором для взаимодействия.

Если у вас есть объект x , вы можете просмотреть его строковое представление JSON с помощью простой строки кода:

Другой вариант функции dumps(), называемый dump(), просто сериализует объект в текстовый файл. Итак, если f — объект текстового файла, открытый для записи, мы можем сделать следующее:

Для повторного декодирования объекта, если f является объектом текстового файла, который был открыт для чтения:

Этот простой метод сериализации может работать со списками и словарями, но сериализация экземпляров произвольного класса в JSON требует дополнительных усилий. Справочник по модулю json содержит объяснение этого.

pickle — модуль рассола

В отличие от JSON , pickle — это протокол, который позволяет сериализовать произвольно сложные объекты Python. Таким образом, он специфичен для Python и не может использоваться для взаимодействия с приложениями, написанными на других языках. Это также небезопасно по умолчанию: десериализация данных pickle, поступающих из ненадежного источника, может привести к выполнению произвольного кода, если данные были созданы опытным злоумышленником.

В этом руководстве вы узнаете об обработке файлов в C. Вы научитесь обрабатывать стандартный ввод-вывод в C с помощью функций fprintf(), fscanf(), fread(), fwrite(), fseek() и т. д. помощь примеров.

Файл — это контейнер на компьютерных запоминающих устройствах, используемый для хранения данных.

Зачем нужны файлы?

  • При завершении программы все данные теряются. Сохранение в файле сохранит ваши данные, даже если программа завершит работу.
  • Если вам нужно ввести большое количество данных, ввод их всех займет много времени.
    Однако, если у вас есть файл, содержащий все данные, вы можете легко получить доступ к содержимому файла с помощью нескольких команд на языке C.
  • Вы можете легко перенести свои данные с одного компьютера на другой без каких-либо изменений.

Типы файлов

При работе с файлами необходимо знать два типа файлов:

1. Текстовые файлы

Текстовые файлы — это обычные файлы .txt. Вы можете легко создавать текстовые файлы с помощью любых простых текстовых редакторов, таких как Блокнот.

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

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

2. Бинарные файлы

Двоичные файлы — это в основном файлы .bin на вашем компьютере.

Вместо того, чтобы хранить данные в виде обычного текста, они хранят их в двоичной форме (0 и 1).

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

Операции с файлами

В C вы можете выполнять четыре основные операции с файлами, текстовыми или двоичными:

  1. Создание нового файла
  2. Открытие существующего файла
  3. Закрытие файла
  4. Чтение и запись информации в файл

Работа с файлами

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

Открытие файла — для создания и редактирования

Открытие файла выполняется с помощью функции fopen(), определенной в заголовочном файле stdio.h.

Синтаксис открытия файла в стандартном вводе-выводе:

  • Предположим, что файл newprogram.txt не существует в папке E:\cprogram. Первая функция создает новый файл с именем newprogram.txt и открывает его для записи в соответствии с режимом 'w'.
    Режим записи позволяет создавать и редактировать (перезаписывать) содержимое файла.
  • Теперь предположим, что второй двоичный файл oldprogram.bin существует в папке E:\cprogram. Вторая функция открывает существующий файл для чтения в бинарном режиме 'rb'.
    Режим чтения позволяет только читать файл, вы не можете записывать в файл.

Закрытие файла

Файл (как текстовый, так и двоичный) должен быть закрыт после чтения/записи.

Закрытие файла выполняется с помощью функции fclose().

Здесь fptr — это указатель файла, связанный с файлом, который нужно закрыть.

Чтение и запись в текстовый файл

Для чтения и записи в текстовый файл мы используем функции fprintf() и fscanf().

Это просто версии файлов printf() и scanf() . Единственное отличие состоит в том, что fprintf() и fscanf() ожидают указатель на структуру FILE.

Пример 1. Запись в текстовый файл

Эта программа получает номер от пользователя и сохраняет его в файле program.txt .

После того, как вы скомпилируете и запустите эту программу, вы увидите текстовый файл program.txt, созданный на диске C вашего компьютера. Когда вы откроете файл, вы увидите введенное целое число.

Пример 2. Чтение из текстового файла

Эта программа считывает целое число из файла program.txt и выводит его на экран.

Если вы успешно создали файл из примера 1, запустив эту программу, вы получите введенное целое число.

Другие функции, такие как fgetchar() , fputc() и т. д., можно использовать аналогичным образом.

Чтение и запись в двоичный файл

Функции fread() и fwrite() используются для чтения и записи в файл на диске соответственно в случае двоичных файлов.

Запись в двоичный файл

Для записи в двоичный файл необходимо использовать функцию fwrite(). Функции принимают четыре аргумента:

  1. адрес данных для записи на диск
  2. размер данных для записи на диск
  3. количество таких данных
  4. указатель на файл, в который вы хотите записать.

Пример 3. Запись в двоичный файл с помощью fwrite()

В этой программе мы создаем новый файл program.bin на диске C.

Мы объявляем структуру threeNum с тремя числами — n1, n2 и n3 и определяем ее в основной функции как num.

Теперь внутри цикла for мы сохраняем значение в файле с помощью fwrite() .

Первый параметр принимает адрес num, а второй параметр принимает размер структуры threeNum .

Поскольку мы вставляем только один экземпляр num , третий параметр равен 1 . И последний параметр *fptr указывает на файл, в котором мы сохраняем данные.

Наконец, мы закрываем файл.

Чтение из двоичного файла

Функция fread() также принимает 4 аргумента, как и функция fwrite(), описанная выше.

Пример 4. Чтение из двоичного файла с помощью функции fread()

В этой программе вы читаете один и тот же файл program.bin и перебираете записи одну за другой.

Проще говоря, вы читаете одну запись threeNum размера threeNum из файла, на который указывает *fptr, в структуру num .

Вы получите те же записи, что и в примере 3.

Получение данных с помощью fseek()

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

Это приведет к потере большого количества памяти и рабочего времени. Более простой способ получить необходимые данные можно с помощью fseek() .

Как следует из названия, fseek() ищет курсор для данной записи в файле.

Синтаксис fseek()

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

Откуда по-другому в fseek()

Пример 5: fseek()

Эта программа начнет чтение записей из файла program.bin в обратном порядке (от последнего к первому) и напечатает его.

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

  • Получите информацию о помощи предприятиям в связи с коронавирусом.
  • Используйте Инструмент налоговых льгот для бизнеса в связи с COVID-19, чтобы узнать, имеете ли вы право на специальные налоговые льготы для бизнеса.

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

Что нужно сделать, чтобы закрыть свой бизнес

1. Подать окончательный отчет и соответствующие формы

Вы должны подать окончательный отчет за год закрытия вашего бизнеса.

Тип декларации, которую вы подаете, и соответствующие формы, которые вам нужны, зависят от типа вашего бизнеса. Общество с ограниченной ответственностью (ООО) — это предприятие, организованное в соответствии с законодательством штата. ООО может быть классифицировано для целей федерального подоходного налога как товарищество, корпорация или юридическое лицо, не рассматриваемое как отдельное от своего владельца.

  • Индивидуальный предприниматель — это тот, кто самостоятельно владеет некорпоративным бизнесом.
  • Партнерство — это отношения между двумя или более партнерами для ведения торговли или бизнеса.
  • Корпорация — это отдельное налогооблагаемое юридическое лицо, имеющее хотя бы одного акционера. Сюда входят корпорации S.

Требования к подаче документов для индивидуального предпринимателя

Подать Приложение C (форма 1040 или форма 1040-SR) "Прибыль или убыток от бизнеса" с вашей индивидуальной налоговой декларацией за год закрытия вашего бизнеса.

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

    , за каждый год продажи или обмена имущества, используемого в вашем бизнесе. Вам также необходимо заполнить эту форму, если закрытие вашего бизнеса приведет к тому, что деловое использование подходящего имущества в соответствии с разделом 179 упадет до 50% или менее. , если вы продаете свой бизнес. , если ваш чистый доход от вашего бизнеса составляет 400 долларов США или более.

Требования к регистрации партнерства

Вы должны подать форму 1065 "Отчет о доходах от партнерства в США" за тот год, когда вы закрыли свой бизнес.

При подаче заявки вы должны:

  • Отчет о приросте и убытке капитала по Приложению D (форма 1065).
  • Отметьте поле «Окончательный возврат» (оно находится в верхней части первой страницы возврата, под именем и адресом).
  • Отметьте тот же флажок в Приложении K-1, Доля партнера в доходах, Вычеты, Кредиты и т. д.

Возможно, вместе с формой 1065 вам также потребуется заполнить эти другие формы:

    , за каждый год, когда ваше товарищество продает или обменивает имущество, используемое в бизнесе. Вам также необходимо заполнить эту форму, если закрытие вашего бизнеса приведет к тому, что коммерческое использование подходящего имущества в соответствии с Разделом 179 упадет до 50% или менее. , если вы продаете свой бизнес.

Требования к отчетности для корпораций (включая S-корпорации)

Вы должны подать форму 966 "Ликвидация или роспуск корпорации", если вы принимаете решение или планируете ликвидировать корпорацию или ликвидировать какие-либо ее акции.

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

Для корпорации C вы должны:

  • Заполните форму 1120, декларацию о подоходном налоге с предприятий США, за год закрытия бизнеса.
  • Отчет о приросте и убытке капитала в Приложении D (форма 1120).

Для корпорации S вы должны:

  • Заполните форму 1120-S, декларацию о подоходном налоге США для корпорации S за год закрытия бизнеса.
  • Отчет о приросте и убытке капитала по Приложению D (форма 1120-S).
  • Отметьте поле «Окончательный доход» в Приложении K-1, «Доля акционера в доходах, вычеты, кредиты и т. д.».

Независимо от типа корпорации вам также может потребоваться заполнить эти формы при подаче формы 1120 или 1120-S:

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

2. Позаботьтесь о своих сотрудниках

Налоги с занятости

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

Чтобы сообщить о налогах на работу, вам может потребоваться заполнить следующие формы:

    , или Форма 944, Ежегодная федеральная налоговая декларация работодателя, за квартал, в котором вы произвели окончательные выплаты заработной платы.
    • Установите флажок, чтобы сообщить IRS, что ваш бизнес закрыт, и укажите дату последней выплаты заработной платы в строке 17 формы 941 или строке 14 формы 944.
    • Приложите к декларации заявление с указанием имени лица, ведущего учетные записи по заработной плате, и адреса, по которому эти записи будут храниться.
    • Установите флажок "d" в разделе "Тип возврата", чтобы указать, что форма является окончательной.

    Вы также должны предоставить Форму W-2 (Отчет о заработной плате и налогах) каждому из ваших сотрудников за календарный год, в котором вы выплачиваете им окончательную заработную плату. Вы должны предоставить формы W-2 своим сотрудникам до истечения срока подачи вашей окончательной формы 941 или формы 944. Как правило, вы предоставляете копии B, C и 2 сотрудникам. Вы заполняете форму W-3 «Передача деклараций о доходах и налогах», чтобы передать Копию А в Администрацию социального обеспечения.

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

    Пенсионные или льготные планы

    Если вы предоставляете своим сотрудникам пенсионный или льготный план, узнайте, как отменить пенсионный план. Если вы предоставляете сберегательные счета для здоровья или аналогичные программы для своих сотрудников, см. О публикации 969, Сберегательные счета для здоровья и другие льготные планы медицинского страхования.

    3. Оплатите налог, который вы должны

    См. раздел "Уплата налогов", чтобы узнать, как заплатить причитающийся налог.

    4. Отчет о выплатах контрактным работникам

    Если вы заплатили подрядчикам не менее 600 долларов США за услуги (включая детали и материалы) в течение календарного года, в котором вы закрыли свой бизнес, вы должны сообщить об этих платежах. Используйте форму 1099-NEC, Компенсация неработающим.

    Используйте форму 1096 "Годовой отчет и передача информационных отчетов США", чтобы отправить нам бумажные копии всех форм 1099. Некоторые заявители должны подавать формы 1099 в электронном виде.

    5. Отмените свой EIN и закройте свой бизнес-аккаунт IRS

    Идентификационный номер работодателя, или EIN, присвоенный вашей компании, является постоянным федеральным идентификационным номером налогоплательщика для этой компании. Чтобы аннулировать свой EIN и закрыть свой бизнес-аккаунт IRS, вам необходимо отправить нам письмо, которое включает:

    • Полное юридическое название компании.
    • Идентификационный номер компании
    • Деловой адрес
    • Причина, по которой вы хотите закрыть аккаунт

    Если вы сохранили уведомление, которое мы отправили вам при назначении вашего EIN, вы должны приложить его копию к письму об отмене EIN. Отправьте оба документа нам по адресу:

    Налоговая служба
    Цинциннати, Огайо, 45999

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

    6. Сохраняйте записи

    Сколько времени вам нужно хранить свои деловые записи, зависит от того, что записано в каждом документе.

    Папка TBox Automation Tools -> File Operations в подмножестве Standard содержит следующие модули:

    Сравнение изображений TBox

    Модуль TBox Image Compare позволяет проверять файлы изображений с точностью до пикселя в следующих форматах: BMP, JPG и GIF.

    Он имеет следующие атрибуты:

    Путь и имя файла первого файла изображения.

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

    В этом примере файл изображения logo_new.jpg сравнивается с файлом изображения logo.jpg .


    < /p>

    Сравнить два файла изображений

    Существование файла TBox

    Этот модуль позволяет проверить, существует ли файл в определенном каталоге.

    Он имеет следующие атрибуты:

    Путь к файлу.

    Имя файла, существование которого вы хотите проверить. Вы можете использовать ActionModes Verify или WaitOn .

    Чтобы убедиться, что указанный файл не существует, поставьте знак отрицания ! перед именем файла.

    В этом примере проверяется, существует ли файл test01.xml в каталоге D:\ .


    < /p>

    Проверить существование файла

    На снимке экрана ниже показано, как убедиться, что файл не существует:


    < /p>

    Убедитесь, что файл не существует

    Сравнение файлов TBox

    Этот модуль позволяет сравнивать содержимое двух файлов. После выполнения вы можете просмотреть результат в столбце Loginfo ExecutionEntry.

    Сравнение файлов модуля TBox имеет следующие атрибуты модуля:

    Путь и имя первого файла.

    Путь и имя второго файла.

    В этом примере вы сравниваете файл data_new.xml с файлом data.xml .


    < /p>

    Сравнить два файла

    Копировать файл TBox

    Используйте этот модуль для копирования и вставки файлов в файловой системе Microsoft Windows®. Если вы хотите вставить файл в другой каталог, этот каталог уже должен существовать во время выполнения.

    Операции с файлами модуля TBox имеют следующие атрибуты:

    Путь и имя файла, который вы хотите скопировать.

    Каталог, в который вы хотите вставить файл.

    Если вы хотите переименовать файл, укажите новое имя файла.

    По умолчанию Tricentis Tosca не перезаписывает существующие файлы. Если вы хотите перезаписать существующий файл, установите значение True .

    В этом примере TestStep выполняет следующие действия:

    Копирует файл report_new.xml из каталога C:\Reports в C:\Sales Reports

    Переименовывает файл в report.xml

    Перезаписывает существующий файл в целевом каталоге


    < /p>

    Скопируйте и вставьте файл в другой каталог

    Удалить файл TBox

    Этот модуль удаляет файл из определенного каталога.

    Файл удаления Module TBox имеет следующие атрибуты ModuleAttributes:

    Путь к файлу, который вы хотите удалить.

    Имя файла, который вы хотите удалить.

    Если система не может найти файл, результат выполнения показывает следующее описание: Файл не существует .

    Результат теста положительный.

    В этом примере вы удаляете файл test.xml из каталога C:\Temp .


    < /p>

    Чтение/создание файла TBox

    Этот модуль позволяет выполнять следующие действия:

    Создайте текстовый файл.

    Записать текст в текстовый файл.

    Проверить или буферизовать текст в файле.

    Подождать текст в текстовом файле.

    Файл чтения/создания модуля TBox имеет следующие атрибуты модуля:

    Путь к файлу, который вы хотите создать или прочитать.

    Имя файла, включая расширение файла.

    Текст, который вы хотите написать, проверить, буферизовать или подождать.

    Используйте ввод ActionMode , Verify , Buffer или WaitOn соответственно.

    Если вы хотите перезаписать целевой файл, установите значение True и используйте ввод ActionMode .

    В этом примере TestStep выполняет следующие действия:

    Создает новый текстовый файл с именем test.txt в каталоге C:\Temp

    Добавляет содержимое файла Это текст в файле

    Используется кодировка символов UTF-8

    Перезаписывает существующий файл в целевом каталоге


    < /p>

    Создать новый файл

    В этом примере проверяется, содержит ли файл test.txt в каталоге C:\Temp текст This is text in the file .


    < /p>

    Проверить текст в файле

    Добавить файл TBox

    Этот модуль добавляет Text ModuleAttribute к определенному файлу.

    Если вы определите несуществующий файл, TBox создаст его.

    Файл добавления Module TBox имеет следующие атрибуты ModuleAttributes:

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

    Текст, который следует добавить.

    Заканчиваться новой строкой

    Установите значение True, если вы хотите, чтобы текст добавлялся с новой строкой в ​​конце. Это необязательно.

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

    Способы файлового ввода-вывода расположены от менее сложных к более сложным

    В крайнем левом углу диаграммы показаны служебные методы readAllBytes , readAllLines и методы записи, предназначенные для простых, распространенных случаев. Справа от них находятся методы, используемые для перебора потока или строк текста, такие как newBufferedReader, newBufferedWriter, затем newInputStream и newOutputStream. Эти методы совместимы с пакетом java.io. Справа от них находятся методы для работы с ByteChannels, SeekableByteChannels и ByteBuffers, такие как метод newByteChannel. Наконец, справа показаны методы, использующие FileChannel для расширенных приложений, которым требуется блокировка файлов или ввод-вывод с отображением памяти.

    Примечание. Методы создания нового файла позволяют указать необязательный набор исходных атрибутов для файла. Например, в файловой системе, поддерживающей набор стандартов POSIX (например, UNIX), вы можете указать владельца файла, владельца группы или права доступа к файлу во время создания файла. На странице «Управление метаданными» объясняются атрибуты файлов, а также способы доступа к ним и их установки.

    Эта страница имеет следующие темы:

    Параметр OpenOptions

    Некоторые методы в этом разделе принимают необязательный параметр OpenOptions. Этот параметр является необязательным, и API сообщает вам, какое поведение по умолчанию для метода, если он не указан.

    Поддерживаются следующие перечисления StandardOpenOptions:

    • ЗАПИСЬ — открывает файл для записи.
    • APPEND — добавляет новые данные в конец файла. Этот параметр используется с параметрами WRITE или CREATE.
    • TRUNCATE_EXISTING — усекает файл до нуля байтов. Этот параметр используется с параметром WRITE.
    • CREATE_NEW — создает новый файл и выдает исключение, если файл уже существует.
    • CREATE — открывает файл, если он существует, или создает новый файл, если он не существует.
    • DELETE_ON_CLOSE — удаляет файл при закрытии потока. Этот параметр полезен для временных файлов.
    • SPARSE — указывает на то, что вновь созданный файл будет разреженным. Этот расширенный параметр используется в некоторых файловых системах, таких как NTFS, где большие файлы с «пробелами» данных могут храниться более эффективно, так как эти пустые промежутки не занимают место на диске.
    • СИНХРОНИЗАЦИЯ – синхронизирует файл (содержимое и метаданные) с базовым устройством хранения.
    • DSYNC: синхронизирует содержимое файла с базовым устройством хранения.

    Часто используемые методы для небольших файлов

    Чтение всех байтов или строк из файла

    Если у вас небольшой файл и вы хотите прочитать все его содержимое за один проход, вы можете использовать метод readAllBytes(Path) или readAllLines(Path, Charset). Эти методы берут на себя большую часть работы за вас, например открытие и закрытие потока, но не предназначены для обработки больших файлов. В следующем коде показано, как использовать метод readAllBytes:

    Запись всех байтов или строк в файл

    Для записи байтов или строк в файл можно использовать один из методов записи.

    В следующем фрагменте кода показано, как использовать метод записи.

    Буферизованные методы ввода/вывода для текстовых файлов

    Пакет java.nio.file поддерживает канальный ввод-вывод, который перемещает данные в буферы, минуя некоторые уровни, которые могут стать узким местом для потокового ввода-вывода.

    Чтение файла с использованием буферизованного потокового ввода-вывода

    Метод newBufferedReader(Path, Charset) открывает файл для чтения, возвращая BufferedReader, который можно использовать для эффективного чтения текста из файла.

    В следующем фрагменте кода показано, как использовать метод newBufferedReader для чтения из файла. Файл закодирован в "US-ASCII".

    Запись файла с использованием буферизованного потокового ввода-вывода

    Вы можете использовать метод newBufferedWriter(Path, Charset, OpenOption. ) для записи в файл с помощью BufferedWriter .

    В следующем фрагменте кода показано, как с помощью этого метода создать файл, закодированный в "US-ASCII":

    Методы для небуферизованных потоков и совместимость с API java.io

    Чтение файла с помощью потокового ввода-вывода

    Чтобы открыть файл для чтения, можно использовать метод newInputStream(Path, OpenOption. ). Этот метод возвращает небуферизованный входной поток для чтения байтов из файла.

    Создание и запись файла с помощью потокового ввода-вывода

    Вы можете создать файл, добавить в файл или записать в файл с помощью метода newOutputStream(Path, OpenOption. ). Этот метод открывает или создает файл для записи байтов и возвращает небуферизованный выходной поток.

    Метод принимает необязательный параметр OpenOption. Если параметры открытия не указаны и файл не существует, создается новый файл.Если файл существует, он усекается. Этот параметр эквивалентен вызову метода с параметрами CREATE и TRUNCATE_EXISTING.

    В следующем примере открывается файл журнала. Если файл не существует, он создается. Если файл существует, он открывается для добавления.

    Методы для каналов и байтовых буферов

    Чтение и запись файлов с помощью канала ввода-вывода

    В то время как поток ввода-вывода считывает символ за раз, канальный ввод-вывод считывает буфер за раз. Интерфейс ByteChannel обеспечивает базовые функции чтения и записи. SeekableByteChannel — это ByteChannel, который может поддерживать позицию в канале и изменять эту позицию. SeekableByteChannel также поддерживает усечение файла, связанного с каналом, и запрос размера файла.

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

    Существует два метода чтения и записи ввода-вывода канала.

    Примечание. Методы newByteChannel возвращают экземпляр SeekableByteChannel . С файловой системой по умолчанию вы можете преобразовать этот байтовый канал с возможностью поиска в FileChannel, предоставляя доступ к более продвинутым функциям, таким как отображение области файла непосредственно в памяти для более быстрого доступа, блокировка области файла, чтобы другие процессы не могли получить к ней доступ, или чтение и запись байтов из абсолютной позиции без изменения текущей позиции канала.

    Оба метода newByteChannel позволяют указать список опций OpenOption. Поддерживаются те же параметры открытия, что и в методах newOutputStream, в дополнение к еще одному параметру: READ требуется, поскольку SeekableByteChannel поддерживает как чтение, так и запись.

    Указание READ открывает канал для чтения. Указание WRITE или APPEND открывает канал для записи. Если ни один из этих параметров не указан, то канал открывается для чтения.

    Следующий фрагмент кода считывает файл и выводит его на стандартный вывод:

    В следующем примере, написанном для UNIX и других файловых систем POSIX, создается файл журнала с определенным набором прав доступа к файлам. Этот код создает файл журнала или добавляет его к файлу журнала, если он уже существует. Файл журнала создается с разрешениями на чтение/запись для владельца и разрешениями только на чтение для группы.

    Способы создания обычных и временных файлов

    Создание файлов

    Вы можете создать пустой файл с начальным набором атрибутов, используя метод createFile(Path, FileAttribute). Например, если во время создания вы хотите, чтобы файл имел определенный набор прав доступа к файлу, используйте для этого метод createFile. Если вы не укажете никаких атрибутов, файл будет создан с атрибутами по умолчанию. Если файл уже существует, createFile выдает исключение.

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

    Следующий фрагмент кода создает файл с атрибутами по умолчанию:

    Разрешения для файлов POSIX содержат пример использования createFile(Path, FileAttribute) для создания файла с предустановленными разрешениями.

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

    Создание временных файлов

    Вы можете создать временный файл, используя один из следующих методов createTempFile:

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

    Читайте также:

Откуда Значение
SEEK_SET Начинает смещение с начала файла.
SEEK_END Начинает смещение от конца файла.
SEEK_CUR Начинает смещение от текущего положения курсора в файле.