Latest web development tutorials

루비는 입력 및 출력 파일

루비는 커널 (커널) 모듈로 구현 I / O 관련 메소드 세트를 제공합니다. 모든 I / O 방법은 IO 클래스로부터 파생된다.

IO는읽기, 쓰기, 도착, 풋, 모든 클래스 기반의 접근 방식 제공 작성한 Readline, getc 그룹과의 printf를.

이 섹션에서는 가능한 모든 루비 기반의 I / O 기능을 설명합니다. 더 많은 기능을 위해, 루비의IO 클래스를참조하십시오.

문을둔다

이전 섹션에서는 변수에 할당 한 다음둔다 문출력을 사용합니다.

문은 프로그램 변수에 저장된 값을 표시 나타냅니다넣습니다.이것은 각 줄의 끝에 새 행을 추가합니다.

#!/usr/bin/ruby

val1 = "This is variable one"
val2 = "This is variable two"
puts val1
puts val2

위의 예제 출력은 실행

This is variable one
This is variable two

문을얻는다

문 STDIN 불리는 표준 화면에서 사용자의 입력을 얻기 위하여 이용 될 수얻는다.

다음 코드는 문을 얻는다 사용하는 방법을 보여줍니다. 코드는 변수 발에 저장됩니다 값을 입력하라는 메시지를 표시합니다, 마지막은 STDOUT에 인쇄됩니다.

#!/usr/bin/ruby

puts "Enter a value :"
val = gets
puts val

위의 예제 출력은 실행

Enter a value :
This is entered value
This is entered value

putc 문

그리고putc문을 출력하는 문자 시퀀스를 사용할 수 있지만 성명, 화면 전체 문자열의출력을두고,다른 문장을둔다.

다음 코드 만 문자 H의 출력 :

#!/usr/bin/ruby

str="Hello Ruby!"
putc str

위의 예제 출력은 실행

H

인쇄 문

문을인쇄하고유사한 문을넣습니다.유일한 차이점은 문둔다프린트명령문의 사용은, 커서가 동일 선상에 위치되는 동안 출력은 다음 라인으로 이동한다는 것이다.

#!/usr/bin/ruby

print "Hello World"
print "Good Morning"

위의 예제 출력은 실행

Hello WorldGood Morning

열기 및 파일 닫기

지금, 당신은 읽고 표준 입력과 출력에 기록합니다. 이제, 우리는 어떻게 실제 데이터 파일을 볼 것이다.

File.new 방법

당신은파일 객체가,File.new 방법을 읽기, 쓰기 또는 읽기 및 쓰기, 읽기 모드 매개 변수에 따라 권한을 작성하는 데 사용됩니다 만들 수 있습니다. 마지막으로, 당신은 파일을 닫습니다File.close의방법을 사용할 수 있습니다.

문법

aFile = File.new("filename", "mode")
   # ... 处理文件
aFile.close

File.open 방법

당신은File.open 방법을사용하여 새 파일 개체를 만들 수 있고, 객체는 파일 파일에 할당됩니다. 그러나File.open과File.new 방법 사이에 하나의 차이가있다. 차이는File.open 방법File.new 방법 블록과 연관된 아닌 수이다.

File.open("filename", "mode") do |aFile|
   # ... process the file
end

다음 표는 다른 모드에서 열려있는 파일을 나열합니다 :

模式描述
r只读模式。文件指针被放置在文件的开头。这是默认模式。
r+读写模式。文件指针被放置在文件的开头。
w只写模式。如果文件存在,则重写文件。如果文件不存在,则创建一个新文件用于写入。
w+读写模式。如果文件存在,则重写已存在的文件。如果文件不存在,则创建一个新文件用于读写。
a只写模式。如果文件存在,则文件指针被放置在文件的末尾。也就是说,文件是追加模式。如果文件不存在,则创建一个新文件用于写入。
a+读写模式。如果文件存在,则文件指针被放置在文件的末尾。也就是说,文件是追加模式。如果文件不存在,则创建一个新文件用于读写。

파일을 읽기 및 쓰기

단순한 I / O를위한 방법은 모든 파일 객체에 대해 사용될 수있다. 그래서, 도착 표준입력에서라인을읽고,aFile.gets aFile 변수는 파일 객체로부터 라인을 읽습니다.

그러나, 나는 / O 객체는 접근 방법의 추가 세트를 제공 편리함으로 우리를 제공합니다.

sysread방법

사용자는 파일의 내용을 읽어sysread 방법을사용할수있다.메소드 sysread를 사용하면 파일을 열 수있는 하나의 모드를 사용할 수 있습니다. 예를 들면 :

다음은 입력 텍스트 파일 :

This is a simple text file for testing purpose.

지금의 파일을 읽으려고하자 :

#!/usr/bin/ruby

aFile = File.new("input.txt", "r")
if aFile
   content = aFile.sysread(20)
   puts content
else
   puts "Unable to open file!"
end

이 문은 파일의 처음 20 문자를 입력합니다. 파일 포인터는 파일 (21) 문자 위치에 배치됩니다.

SYSWRITE방법

당신은 파일에 기록하는 방법SYSWRITE를사용할 수 있습니다. 메소드 SYSWRITE를 사용하는 경우, 당신은 쓰기 모드로 파일을 열어야합니다. 예를 들면 :

#!/usr/bin/ruby

aFile = File.new("input.txt", "r+")
if aFile
   aFile.syswrite("ABCDEF")
else
   puts "Unable to open file!"
end

문은 파일에 "ABCDEF"를 작성됩니다.

each_byte 방법

이 방법은 클래스파일에 속한다.Each_byte 반복 방법은 문자열의 각 문자에 할 수있다. 다음 코드 예제를 고려하십시오

#!/usr/bin/ruby

aFile = File.new("input.txt", "r+")
if aFile
   aFile.syswrite("ABCDEF")
   aFile.rewind
   aFile.each_byte {|ch| putc ch; putc ?. }
else
   puts "Unable to open file!"
end

이어서 문자 변수는 CH를 통과하고 다음과 같이 화면에 표시된다 :

A.B.C.D.E.F.s. .a. .s.i.m.p.l.e. .t.e.x.t. .f.i.l.e. .f.o.r. .t.e.s.t.i.n.g. .p.u.r.p.o.s.e...

IO.readlines 방법

File클래스는 클래스 IO의 서브 클래스입니다. IO 클래스는 파일을 조작하기위한 몇 가지 방법이 있습니다.

IO.readlines는IO 클래스 방법이다. 진보적 인 방법은, 파일의 내용을 리턴한다. 다음 코드는IO.readlines 사용하는방법을 보여줍니다

#!/usr/bin/ruby

arr = IO.readlines("input.txt")
puts arr[0]
puts arr[1]

이 코드에서 변수는 배열 도착합니다. 각 행은 요소input.txt를배열 도착 파일입니다. 따라서, 도착 [0] 첫 번째 줄이 포함되며, 도착 [1] 파일의 두 번째 줄이 포함됩니다.

IO.foreach 방법

상기 방법은 또한 프로그레시브 출력을 리턴한다. 다른 방법과 방법의readlines 메쏘드사이의 Foreach는 방법foreach는블록을 연결되어 있습니다. 그러나, 대신 배열을 반환하는 방법readlines 메쏘드,foreach는 방법과는 달리. 예를 들면 :

#!/usr/bin/ruby

IO.foreach("input.txt"){|block| puts block}

파일 내용을테스트코드는 출력 화면에 표시되는 변수 프로그레시브 블록을 통과시켰다.

이름 바꾸기와 파일을 삭제

당신은 이름을 변경하고 파일이름을 변경하고방법을삭제삭제할 수 있습니다.

다음의 예는이미있는 test1.txt을존재하는 파일의 이름을 변경합니다:

#!/usr/bin/ruby

# 重命名文件 test1.txt 为 test2.txt
File.rename( "test1.txt", "test2.txt" )

다음의 예는 기존의 파일test2.txt가 삭제합니다 :

#!/usr/bin/ruby

# 删除文件 test2.txt
File.delete("text2.txt")

파일 모드 및 소유권

마스크 패턴이나 파일 권한 / 액세스 목록과 방법을 변경chmod를 사용:

마스크 값에 대한 기존의 파일TEST.TXT 모델을다음과 같이 변경의 예 :

#!/usr/bin/ruby

file = File.new( "test.txt", "w" )
file.chmod( 0755 )

다음 표는chmod를방법을 사용할 수있는 다른 마스크를 나열합니다 :

掩码描述
0700rwx 掩码,针对所有者
0400r ,针对所有者
0200w ,针对所有者
0100x ,针对所有者
0070rwx 掩码,针对所属组
0040r ,针对所属组
0020w ,针对所属组
0010x ,针对所属组
0007rwx 掩码,针对其他人
0004r ,针对其他人
0002w ,针对其他人
0001x ,针对其他人
4000执行时设置用户 ID
2000执行时设置所属组 ID
1000保存交换文本,甚至在使用后也会保存

문서 액세스

다음 명령은 파일이 이미 존재하는 열기 전에 파일을 확인합니다 :

#!/usr/bin/ruby

File.open("file.rb") if File::exists?( "file.rb" )

다음 명령은 파일이 실제로 파일인지 여부를 질의합니다 :

#!/usr/bin/ruby

# 返回 true 或false
File.file?( "text.txt" ) 

지정된 파일 이름이 있는지 여부를 확인하기 위해 명령을 따르는 것은 디렉토리입니다 :

#!/usr/bin/ruby

# 一个目录
File::directory?( "/usr/local/bin" ) # => true

# 一个文件
File::directory?( "file.rb" ) # => false

다음 명령을 읽을 수, 쓰기, 실행 파일을 확인할 수 있습니다 :

#!/usr/bin/ruby

File.readable?( "test.txt" )   # => true
File.writable?( "test.txt" )   # => true
File.executable?( "test.txt" ) # => false

다음 명령은 제로로 파일 크기를 확인합니다 :

#!/usr/bin/ruby

File.zero?( "test.txt" )      # => true

다음 명령은 파일의 크기를 반환합니다 :

#!/usr/bin/ruby

File.size?( "text.txt" )     # => 1002

다음 명령은 파일의 종류를 확인하는데 사용된다 :

#!/usr/bin/ruby

File::ftype( "test.txt" )     # => file

파일, 디렉토리, characterSpecial, blockSpecial :FTYPE 방법은파일의종류를 식별하기 위해 다음의 값을 반환 , FIFO, 링크, 소켓또는 알 수 있습니다.

다음 명령은 생성 된 파일을 확인하는 데 사용, 수정 또는 마지막 액세스 시간입니다 :

#!/usr/bin/ruby

File::ctime( "test.txt" ) # => Fri May 09 10:06:37 -0700 2008
File::mtime( "text.txt" ) # => Fri May 09 10:44:44 -0700 2008
File::atime( "text.txt" ) # => Fri May 09 10:45:01 -0700 2008

루비 디렉토리

모든 파일이 디렉토리에 포함되어, 루비 프로세스 파일 및 디렉토리을 제공합니다. 작업 디렉토리에 대한파일,디렉터리 클래스를 사용한 작업 클래스파일.

카탈로그를 찾아

루비 프로그램의 디렉토리를 변경하려면Dir.chdir을사용하시기바랍니다.현재 디렉토리에 다음과 같이 변경의예는 / usr / bin에 있습니다.

Dir.chdir("/usr/bin")

당신은 현재 디렉토리Dir.pwd를볼 수 있습니다

puts Dir.pwd # 返回当前目录,类似 /usr/bin

당신은Dir.entries 지정된디렉토리 내의 파일과 디렉토리의 목록을 사용할 수 있습니다 :

puts Dir.entries("/usr/bin").join(' ')

Dir.entries 모든지정된 디렉토리를 포함하는 배열을 반환합니다.Dir.foreach 동일한기능을 제공한다 :

Dir.foreach("/usr/bin") do |entry|
   puts entry
end

보다 간결한 방식의 디렉토리 목록은 디렉터리 클래스 배열을 사용하여하는 방법이다 얻을 :

Dir["/usr/bin/*"]

디렉토리를 작성

Dir.mkdir 디렉토리를생성 할 수 있습니다 :

Dir.mkdir("mynewdir")

또한 MKDIR을 채택 새 디렉토리 (안 기존 디렉토리)에 대한 사용 권한을 설정할 수 있습니다 :

참고 : 755 세트 소유자 (owner)를 마스크 그룹 (그룹)에 속하는 모든 사람 (세계 [사람]) 권한를 rwxr-XR-X r은 =, X 쓰기 = 승 읽기, 읽기, 쓰기 = 실행을 실행합니다.

Dir.mkdir( "mynewdir", 755 )

디렉토리를 제거

디렉터리를 삭제하는데 사용될 수Dir.delete.Dir.unlinkDir.rmdir는동일한 기능을 수행 편리함으로 우리를 제공합니다.

Dir.delete("testdir")

임시 디렉토리 파일 만들기 &

임시 파일은 프로그램의 실행 과정에서 단순히이 생성되지만, 영구적으로 정보를 저장하지 않는다.

Dir.tmpdir 사용할 수없습니다 기본적으로하지만, 현재 시스템 임시 디렉토리에 대한 경로를 제공합니다. 필요한 'TMPDIR이'필요로Dir.tmpdir 사용할 수있도록합니다.

당신은Dir.tmpdirFile.join는플랫폼 독립적 임시 파일을 만드는 데 함께 사용 :

require 'tmpdir'
   tempfilename = File.join(Dir.tmpdir, "tingtong")
   tempfile = File.new(tempfilename, "w")
   tempfile.puts "This is a temporary file"
   tempfile.close
   File.delete(tempfilename)

이 코드는 데이터를 기록하고 파일을 삭제하는 임시 파일을 만듭니다. 루비 표준 라이브러리는 또한 임시 파일을 만드는 데 사용할 수있는 라이브러리의임시 파일이름이 라이브러리가 포함되어 있습니다

require 'tempfile'
   f = Tempfile.new('tingtong')
   f.puts "Hello"
   puts f.path
   f.close

내장 기능

다음은 Ruby의 내장 함수에있는 파일 및 디렉토리의 전체 목록을 제공합니다 :