Akin0 Ответов: 2

Ruby (1.8.1) -- ERRNO::EEXIST файл существует


Привет,
Так что я работаю с Руби, И...
У меня есть ошибка "ERRNO::EEXIST, text строка 2 ... Файл существует"
Ошибка возникает, если созданный им каталог (определенный в EGGPATH) уже существует, который должен работать сам по себе из-за "если File.exist?(EGGPATH)"
В то время как то, что я пытаюсь сделать, это:
def cyhm   #file text
  Dir.mkdir(EGGPATH) unless File.exist?(EGGPATH)
  File.open(EGGPATH + "/CAN YOU HEAR ME.txt", "w+") do |f|
    f.write("text")
  end
end
def cyhm_pt2
  Dir.mkdir(EGGPATH) unless File.exist?(EGGPATH)
  if File.exists?(EGGPATH + "/CAN YOU HEAR ME.txt") == false
    cyhm
  end
  File.open(EGGPATH + "/CAN YOU HEAR ME.txt", "a+") do |f|
    f.write("text2")
  end
end

В то время как EGGPATH определен здесь, в другом файле:
TXTLIST = ["Ą", "ą", "Ć", "ć", "Ę", "ę", "Ł", "ł", "Ń", "ń", "Ó", "ó", "Ś", "ś", "Ź", "ź", "Ż", "ż"] #file randomtxt
EGGPAT = TXTLIST[rand(TXTLIST.size)] + TXTLIST[rand(TXTLIST.size)] + TXTLIST[rand(TXTLIST.size)] + TXTLIST[rand(TXTLIST.size)] + TXTLIST[rand(TXTLIST.size)] + TXTLIST[rand(TXTLIST.size)] + TXTLIST[rand(TXTLIST.size)] + TXTLIST[rand(TXTLIST.size)] + TXTLIST[rand(TXTLIST.size)] + TXTLIST[rand(TXTLIST.size)] + TXTLIST[rand(TXTLIST.size)]
if File.exists?(SAVEPATH + "\\MODAR\\eseggdir.es") == false
  File.open(SAVEPATH + "\\MODAR\\eseggdir.es", "w+") do |f|
    f.write(EGGPAT)
  end
end
EGGPATH = File.read(SAVEPATH + "\\MODAR\\eseggdir.es")


Кроме того, не говорите мне переключиться на более новую версию Ruby, потому что я работаю с RPGXP, и я не хочу менять ее в ближайшее время...

Что я уже пробовал:

Я ничего не пробовал, извините, потому что, насколько я знаю (а это не очень много), все должно работать нормально.

Richard MacCutchan

- насколько я знаю, все должно работать нормально."
Боюсь, вам еще многому предстоит научиться.

Akin0

Да, это так

2 Ответов

Рейтинг:
7

Akin0

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


Рейтинг:
2

Richard MacCutchan

Вы, скорее всего, должны использовать Dir.exist, нет File.exist чтобы проверить наличие каталога.


Akin0

"Неопределенный метод "существует?" для реж.: класс"

Richard MacCutchan

Этот метод находится в Класс: Реж. (Ruby 2.5.1)[^Итак, я думаю, вам нужно найти какой-то другой способ проверить, существует ли каталог.

Akin0

Да, но File.exist всегда работал с каталогами...

Richard MacCutchan

Ну, похоже, в данном случае это не сработает. Я думаю, вам нужно сделать еще несколько отладок, чтобы точно выяснить, что происходит.