1

我编写了一个 java 程序,它在 pdf 上启用了共享审阅功能。将 pdf 制作为 Shared Review PDF 后,它会将 pdf 发送到 UNIX 机器中的链接文件夹(链接文件夹表示文件夹的快捷路径)。之后,通过 crontab 以不同方式运行的 shell 脚本使 pdf 成为启用注释,并通过脚本将 pdf 复制到某个文件夹。

现在的问题是,每当我在 UNIX 链接文件夹中复制文件时(用于将文件复制到我正在使用的链接文件夹FileUtils.copyInputStream()中),启用注释的脚本正在执行并在 pdf(.sh 脚本中执行所有启用注释的操作UNIX,它不是从我的程序运行的。)但在保存文件期间,它会提示文件是只读的并退出而不保存文件。但是,如果我手动执行相同的操作(将文件手动放入 UNIX 中的链接文件夹),它将使 pdf 文件成为启用注释。这是我将文件发送到文件夹的示例代码。

try{
                    String outFname="SR_"+fname;
                    srEnabledIs = new FileInputStream(pdfoutputPath+fname);

                    if(srEnabledIs!=null && !path.equals("")){
                        Date today = new Date();
                        SimpleDateFormat format = new SimpleDateFormat("dd_MM_yyyy_hh_mm_ss_a");
                        String timeStamp=format.format(today);
                        FileUtils.copyInputStreamToFile(srEnabledIs, new File(path+outFname));
                        logtracker.writeDebugNormalLog("AnnotationMain","file copied to " + path);
                        try{
                            lrfile.renameTo(new File(pdfinputPath+"/pdf/"+fname.split("[.]")[0]+"_"+timeStamp+".pdf"));
                        }catch(Exception ex){
                            logtracker.writeDebugNormalLog("AnnotationMain", ex.getMessage());
                            ex.printStackTrace();
                        }                        
                    }else{
                        if(path.equals("")){
                            logtracker.writeDebugNormalLog("AnnotationMain", "File not copied as path not found.");
                        }
                        if(srEnabledIs==null){
                            logtracker.writeDebugNormalLog("AnnotationMain", "File not copied as InputStream is null.");
                        }
                        if(srEnabledIs==null && path.equals("")){
                            logtracker.writeDebugNormalLog("AnnotationMain", "File not copied as InputStream is null and path not found.");
                        }
                    }
                   }catch(IOException e){
                       logtracker.writeDebugNormalLog("AnnotationMain", e.getMessage());
                       e.printStackTrace();
                   }finally{
                       if(srEnabledIs!=null){
                           srEnabledIs.close();
                       }
                   }

但是相同的程序在其他 UNIX 机器上运行并成功执行。我真的无法理解这种情况。请帮助我摆脱这种情况。

4

0 回答 0