Ошибка доступа @ rb_sysopen (Errno :: EACCES) при попытке запустить программу Ruby через RubyMine 2019.1 - PullRequest
1 голос
/ 17 апреля 2019

Я пытаюсь выполнить программу Ruby (Ruby v2.5.3) в Windows 10, где я в основном открываю файл (sample1.txt, sample2.txt) и добавляю его содержимое (список из 3 имен) в пустой файл (result.txt), а затем сортирую содержимоефайла result.txt (весь код ниже).Однако, когда я запускаю этот код на RubyMine 2019.1, я получаю сообщение об ошибке:

Traceback (most recent call last):
        6: from C:/Users/tanveer.dey/RubymineProjects/src/Assignment9.rb:5:in `<main>'
        5: from C:/Users/tanveer.dey/RubymineProjects/src/Assignment9.rb:5:in `each'
        4: from C:/Users/tanveer.dey/RubymineProjects/src/Assignment9.rb:7:in `block in <main>'
        3: from C:/Users/tanveer.dey/RubymineProjects/src/Assignment9.rb:7:in `each'
        2: from C:/Users/tanveer.dey/RubymineProjects/src/Assignment9.rb:8:in `block (2 levels) in <main>'
        1: from C:/Users/tanveer.dey/RubymineProjects/src/Assignment9.rb:8:in `open'
C:/Users/tanveer.dey/RubymineProjects/src/Assignment9.rb:8:in `initialize': Permission denied @ rb_sysopen - result.txt (Errno::EACCES)

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

Я только начал работать над Ruby и нигде не мог найти решение этой проблемы.Ваша помощь очень ценится.

file_array = ["sample1.txt", "sample2.txt"]

file_array.each do |x|
  file = File.open(x,'r')
  file.each do |h|
  open('result.txt', 'a') do |f|
    puts f << h
  end
  end
  open('result.txt','a') do |f|
    puts f << "\n"
  end
  end

new_array = File.readlines('result.txt').sort
File.open('result.txt','w') do |file|
  new_array.each {|n| file.puts(n)}
end

1 Ответ

1 голос
/ 22 апреля 2019

Нашли исправление! Эта проблема возникает из-за того, что файл result.txt, в который содержимое «записывается», указан «с расширением (.txt)». Удаление расширения из файловых операций, которое включает запись, решает проблему. Ниже код без расширения теперь работает отлично.


file_array.each do |x|
  file = File.open(x,'r')
  file.each do |h|
  open('result', 'a') do |f|
    puts f << h
  end
  end
  open('result','a') do |f|
    puts f << "\n"
  end
  end

new_array = File.readlines('result').sort
File.open('result','w') do |file|
  new_array.each {|n| file.puts(n)}
end
...