我编写了一个 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 机器上运行并成功执行。我真的无法理解这种情况。请帮助我摆脱这种情况。