2014-09-14 2 views
1

Я знаю, что делает io.open(file, "w"), он указывает на написание. Однако я столкнулся с io.open(file, "w+") и не могу найти, что делает «w +»?Строка файла открытого файла w +

+0

У меня такой же вопрос - почему у lua есть три режима написания: «Пишите», «Добавить» и «Написать +»? –

ответ

1

В справочном руководстве io.open

Строка mode может быть любым из следующих:

  • "г": режим (по умолчанию) для чтения;
  • "w": режим записи;
  • «a»: append mode;
  • «r +»: режим обновления, все предыдущие данные сохранены;
  • «w +»: режим обновления, все предыдущие данные стираются;
  • «a +»: добавить режим обновления, сохранены предыдущие данные, запись разрешена только в конце файла.

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

+0

Это не отвечает на вопрос, который я считаю разумным. В большинстве языков есть два варианта написания файла: «append» добавляет лишний материал в конец существующего файла, а «write» заполняет существующее содержимое файла и начинает писать с байтового номера 0. Я прочитал этот самый раздел руководство и оказалось здесь для уточнения. –

+0

@NULLpointer Большинство языков, действительно? Эти режимы доступны, по крайней мере, в C/Python/Ruby/Lua ..., а некоторые другие языки неявно поддерживают все эти режимы каким-то образом инкапсулированным образом, что имеет место для C++/Java. –

+0

Это лучше!Ваше редактирование добавило ключевую информацию, которая отсутствовала - как ввод, так и вывод могут быть выполнены с помощью w + –

0

Я испытал это в Lua 5.1 работает на OpenWRT и нашел

file=io.open("/usr/share/result","w") 

был таким же, как

file=io.open("/usr/share/result","w+") 

Оба действия стерта текущее содержимое файла и переписал его.

Когда я попытался

file=io.open("/usr/share/result","a") 

Файл был прилагаемый к - она ​​получила больше и больше каждый раз, когда мой код побежал.

Так что я не думаю, что есть разница.

+0

Этот ответ неверен. Разница между ** режимом записи ** и ** режимом обновления **: с режимом '' w '', вы можете выводить только в файл, а в режиме '' w + "' могут выполняться как вход, так и вывод , –

+0

Как вы заметили, вы действительно думаете, что разработчик языка (а не только Lua, но также C/Python/Ruby и т. Д.) Сохранит оба значения, если '' w "и' "w +" 'были действительно одинаковыми? –

0

io.open просто использует Еореп С. Вы можете проверить руководство по Еорепу в С.

  • ш: Обрезать файл до нулевой длины или создать текстовый файл для записи. Поток расположен в начале файла.
  • w +: то же, что и w, кроме возвращенной ручки можно использовать для
    чтение.
Смежные вопросы