6.1 连接类型
Next: Output to connections,Previous: Connections,Up: Connections
6.1 连接类型
最熟悉的连接类型是文件,而文件连接由函数file创建。文件连接打开后可以在文本或二进制模式下读写添加文本(如果操作系统允许的话)。事实上,文件可以为读和写同时打开,并且R 为读和写保持分离的文件位置。
注意,一个连接创建后默认不是打开的。基本原则是使用连接的函数在连接还没有打开时需要打开一个连接(必须的),并且如果它打开了一个连接在使用后需要关闭它。简单来说,让连接处于你发现它时的状态。有泛型函数open 和close 的方法去显式地打开或关闭连接。
gzip 算法压缩的文件可以通过函数 gzfile创建连接,而bzip2 算法压缩的文件通过bzfile 创建连接。
Unix程序员习惯用 stdin,stdout 和 stderr 处理特定的文件。这些以 终端连接(Terminal Connection)的形式在R里面存在。它们可能是通常的文件,但是它们还可能指向从图形化控制台输入或输出的内容。(尽管使用标准的UnixR 接口,stdin 使用通过 readline 提交的行而不是一个文件。)
这三个终端连接总是打开的,并且不能再打开或关闭。stdout 和 stderr 习惯用于正常输出(标准输出流)和错误信息的输出(标准错误流)。它们可能输出到同一个地方,但是尽管正常输出可以通过调用函数 sink 实现重定向,传送给stderr的错误信息输出必须使用 sink, type="message")。需要特别注意这里使用的语句:连接不能重定向,但输出可以发送给其它连接。
文本连接(Text connections)是另外一种输入源。它们允许 R 读入的字符向量就像从文本文件中读入的行。可用调用textConnection 来创建和打开文本连接。函数 textConnection 在创建文本连接的时候把字符向量的当前内容复制到内部缓存里面。
文本连接可以用来捕获R输出到一个字符向量中。textConnection 也能用来在用户的工作空间创建一个新的字符对象或者添加到一个已有的对象后面。通过调用 textConnection 打开连接,并且任何时候输出到连接的全部行都可以从 R 对象获得。关闭连接时会把所有余下的输出写入到字符向量的最后一个元素。
管道(Pipes)是连接到其它进程的文件的一种特有形式,管道连接通过函数pipe 创建。为写而打开一个管道连接(在管道后面添加内容是没有意义的)时,首先运行一个操作系统命令,然后把标准输出和R连接,最后把内容写入到那个管道。相反,为输入打开一个管道连接,也是运行一个操作系统命令,然后让它的标准输出作为R从那个连接获得的输入。
URL 类型的 http://,ftp:// 和 file://可以通过函数 url 读内容。为方便起见,file 也可以接受这种文件规范和调用url。
套接字(Sockets)在支持Berkeley类型的套接字系统(大部分Unix系统,Linux和Windows)上可以通过函数socketConnection 创建连接。套接字可以写入也可以读入,并且客户端和服务器端的套接字都可以使用。
Hits:Loading...
