对磁盘文件的I/O操作

一、对磁盘文件的I/O操作:

方法a:利用Oracle的UTL_FILE包

1.      删除文件

要使用UTL_FILE包首先需要设置utl_file_dir参数,方法如下

以SYS用户登陆后执行以下步骤

1、CREATE [OR REPLACE] DIRECTORY directory AS 'pathname';--创建目录

2、grant read,write on directory TMP to public;

3、alter system set utl_file_dir='d:\' scope=spfile;

4、重启数据库

utl_file.fremove('/ybq/…/Report',   --location IN VARCHAR2

'tag.txt'              --filename IN VARCHAR2);

 

或者也可以更简单,直接执行第1、2步,如:

create  or  replace  directory  ZZOMPATH   as '/ybq/…/Report';

然后再把utl_file.fremove('/ybq/…/Report', 'tag.txt');

改成     utl_file.fremove('ZZOMPATH', 'tag.txt' );

就可以了,不用改系统参数,更不用重启数据库!

2.      复制文件

utl_file.fcopy(

src_location  IN VARCHAR2,  --源文件目录

src_filename  IN VARCHAR2,  --源文件名

dest_location IN VARCHAR2,  --目标文件目录

dest_filename IN VARCHAR2,  --目标文件名

start_line    IN BINARY_INTEGER DEFAULT 1, --起始行

end_line      IN BINARY_INTEGER DEFAULT NULL); --结束行

3.      others

fopen    打开指定的目录路径的文件。  

get_line  获取指定文件的一行的文本。  

put_line  向指定的文件写入一行文本。  

fclose    关闭指定的文件。  

方法b:利用shell脚本

1.      shell脚本

--定义变量:

TODAY=`date +%Y%m%d`   --系统日期

--调用变量

${变量名}   

--传入shell脚本的参数

    ${1}     --表示传入shell脚本的第1个参数

---写入内容:echo “内容” >> 路径/文件名

  echo "File Dir Is ${1}" >> ${LOG}${TODAY}${TIME}  

--到指定目录下

  cd ${1} 

--判断文件是否存在

    if [[ -e "${2}"  ]]   --判断文件名为 ${2} 的文件是否存在

--创建文件

             vi ${2}    

--返回值

         exit  0     

 

    

2.      调用shell脚本

首先将shell脚本文件存放到某个路径,并赋权限777,调用例子如下:

--调用‘生成文件.sh‘脚本,生成tag.txt

l_return       NUMBER := 0; --执行状态 成功返回0

l_return := zz_edi_common_pkg.command_execute

(p_command   => l_file_path || '/step2_rtp.sh ' ||--shell脚本路径及脚本名

                  '"' || l_file_path || '/Report" ' || --参数1 ${1} 路径

                  '"' || l_file_name || '" ' ||    --参数2 ${2} 文件名

                  '"' ||l_text_content || '"',     --参数3 ${3}  内容

                    p_parameter1 => ' ',

                    p_parameter2 => ' ',

                    p_parameter3 => ' ',

                    p_parameter4 => ' ');

注意:参数间必须用||'" '||隔开 ,并且必须两个参数间的得有空格,

     写成||'"'||将无法辨别参数。

posted @ 2012-01-15 16:04  CiWEi`  阅读(546)  评论(0)    收藏  举报