Java通SAS下载sas脚本

简述

书接上回,有时候需要将执行好的sas数据库文件对外提供,实际程序和sas不在同一台服务器上,不想挂载硬盘可以利用FileService进行下载,本章就主要讲解如何使用FileService进行sas7bdat文件的下载。

配置workspace和配置libname信息

这个参照上一章

下载文件

主要关注:

  1. names变量,这里边会存放所有的sas7bdat文件名;
  2. IFilerf类,这里开始为实际读取文件的;
String folder = "C://test";
IFileService fileSvc = workspace.FileService();
boolean[] fim = new boolean[0];
StringHolder lp = new StringHolder();
StringSeqHolder names = new  StringSeqHolder();
TypeCategorySeqHolder tc = new TypeCategorySeqHolder();
LongSeqHolder ls = new LongSeqHolder();
DateTimeSeqHolder dts = new DateTimeSeqHolder();
StringSeqHolder engines = new StringSeqHolder();
//获取文件列表
fileSvc.ListFiles(folder, ListFilesMode.ListFilesModePath, fim, lp, names, tc, ls, dts, ls, dts, engines);

//遍历文件
String[] fileNames = names.value;
for(String fileName : fileNames){
    //获取文件引用
    StringHolder retName = new StringHolder();
    String rn = fileName.repalce(".sas7bdat", "");
    IFileref fileRef = fileSvc.AssignFileref(rn, "", fileSvc.FullName(fileName, folder), "", retName);

    //开始读写流
    try(FileOutputStream fos = new FileOutputStream(fileName)){
        OctetSeqHolder osh = new OctetSeqHolder();
        int len = 0;
        IBinaryStream bs = null;
        while(true){
            try{
                len = 1 ;
                bs = fileRef.OpenBinaryStream(StreamOpenMode.StreamOpenModeForReading);
                while(len > 0){
                    bs.Read(9999999, osh);
                    len = osh.value.length;
                    if(len > 0){
                        fos.write(osh.value);
                        fos.flush();
                    }
                }
            }catech(Exception e){
                log.error(e)
                break;
            }finally{
                bs.Close();
            }
        }
    }catech(Exception e){
        log.error(e)
    }
}

以上就是下载工作空间下的所有文件的逻辑,后面的打包逻辑输出逻辑就省略了,搞定。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值