Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java抛出Java.io.FileNotFoundException:/dir/file.xlsx";“拒绝许可”;_Java_Excel_Unix_Apache Poi_File Permissions - Fatal编程技术网

Java抛出Java.io.FileNotFoundException:/dir/file.xlsx";“拒绝许可”;

Java抛出Java.io.FileNotFoundException:/dir/file.xlsx";“拒绝许可”;,java,excel,unix,apache-poi,file-permissions,Java,Excel,Unix,Apache Poi,File Permissions,我正在使用POIAPI读取XLSX文件,我想将其转换为CSV文件。xlsx文件被丢弃在服务器中,文件权限为-rw-r--r-- 这是我正在使用的代码: public void processFirstSheet(String filename) throws Exception { OPCPackage pkg = null; try{ FileUtil.set777Permissions(filename); pkg = OPCPack

我正在使用POIAPI读取XLSX文件,我想将其转换为CSV文件。xlsx文件被丢弃在服务器中,文件权限为-rw-r--r--

这是我正在使用的代码:

    public void processFirstSheet(String filename) throws Exception {

    OPCPackage pkg = null;
    try{
        FileUtil.set777Permissions(filename);
        pkg = OPCPackage.open(filename,PackageAccess.READ_WRITE);
    }catch(Exception e){
        log.warning("OPCPackage: "+ e.getMessage());
    }

    try{
        XSSFReader r = new XSSFReader( pkg );
        SharedStringsTable sst = r.getSharedStringsTable();

        // creating the needed parser instance which will
        // generate the needed rows
        XMLReader parser = XMLReaderFactory.createXMLReader(ORG_APACHE_XERCES_PARSERS_SAX_PARSER);
        ContentHandler handler = new RowGenerator(sst);
        parser.setContentHandler(handler);

        Iterator<InputStream> sheets = r.getSheetsData();
        // if there are no sheets to open, return
        if(!sheets.hasNext())
            return;
        // for the moment we parse the first sheet
        InputStream sheet = sheets.next();
        try {
            InputSource sheetSource = new InputSource(sheet);
            parser.parse(sheetSource);
        } finally {
            sheet.close();
        }
    } finally {
        if(pkg!=null)
            pkg.close();
    }
}
public void processFirstSheet(字符串文件名)引发异常{
OPCPackage pkg=null;
试一试{
FileUtil.set777权限(文件名);
pkg=OPCPackage.open(文件名,PackageAccess.READ\u WRITE);
}捕获(例外e){
警告(“OPCPackage:+e.getMessage());
}
试一试{
XSSFReader r=新XSSFReader(pkg);
SharedStringsTable sst=r.getSharedStringsTable();
//创建所需的解析器实例,该实例将
//生成所需的行
XMLReader parser=XMLReaderFactory.createXMLReader(ORG\u APACHE\u XERCES\u parser\u SAX\u parser);
ContentHandler=新的行生成器(sst);
setContentHandler(handler);
迭代器sheets=r.getSheetsData();
//如果没有要打开的图纸,请返回
如果(!sheets.hasNext())
返回;
//现在我们分析第一页
InputStream sheet=sheets.next();
试一试{
InputSource sheetSource=新的InputSource(表);
parser.parse(sheetSource);
}最后{
sheet.close();
}
}最后{
if(pkg!=null)
pkg.close();
}
}
调试时,pkg.close()抛出异常,如下所示:

    java.io.FileNotFoundException: /dir/file.xlsx (Permission denied)
            at java.io.FileOutputStream.open(Native Method)
            at java.io.FileOutputStream.<init>(FileOutputStream.java:212)
            at java.io.FileOutputStream.<init>(FileOutputStream.java:165)
            at org.apache.poi.openxml4j.opc.internal.FileHelper.copyFile(FileHelper.java:68)
            at org.apache.poi.openxml4j.opc.ZipPackage.closeImpl(ZipPackage.java:334)
            at org.apache.poi.openxml4j.opc.OPCPackage.close(OPCPackage.java:417)
            at project.format.readers.impl.GCSXlsxReader.processFirstSheet(XlsxReader.java:96)
            at project.format.readers.impl.XlsxReader.<init>(XlsxReader.java:54)
            at project.format.impl.FileConverter.readAndConvert(FileConverter.java:135)
            at project.format.impl.FileConverter.convert(FileConverter.java:66)
            at project.watcher.impl.GCSDirectoryWatcher.startWatchinginDirectory(DirectoryWatcher.java:66)
            at project.watcher.impl.GCSDirectoryWatcher.run(DirectoryWatcher.java:31)
            at java.lang.Thread.run(Thread.java:722)
    Dec 15, 2013 2:12:24 PM project.watcher.impl.FeedHelper archiveFile
java.io.FileNotFoundException:/dir/file.xlsx(权限被拒绝)
在java.io.FileOutputStream.open(本机方法)
位于java.io.FileOutputStream。(FileOutputStream.java:212)
位于java.io.FileOutputStream。(FileOutputStream.java:165)
位于org.apache.poi.openxml4j.opc.internal.FileHelper.copyFile(FileHelper.java:68)
位于org.apache.poi.openxml4j.opc.ZipPackage.closeImpl(ZipPackage.java:334)
位于org.apache.poi.openxml4j.opc.OPCPackage.close(OPCPackage.java:417)
位于project.format.readers.impl.GCSXlsxReader.processFirstSheet(XlsxReader.java:96)
位于project.format.readers.impl.XlsxReader.(XlsxReader.java:54)
位于project.format.impl.FileConverter.readAndConvert(FileConverter.java:135)
位于project.format.impl.FileConverter.convert(FileConverter.java:66)
在project.watcher.impl.GCSDirectoryWatcher.startwatchingdirectory(DirectoryWatcher.java:66)中
在project.watcher.impl.GCSDirectoryWatcher.run(DirectoryWatcher.java:31)
运行(Thread.java:722)
2013年12月15日下午2:12:24 project.watcher.impl.FeedHelper归档文件
就我所见,我无法设置文件的权限777。运行应用程序的用户是为此在Unix服务器上运行的应用程序创建的特定用户

但是,当通过SSH连接到服务器时,我可以将chmod 777设置为该文件的名称。这看起来像是用户的问题,但不知道如何克服它

有什么建议吗


非常感谢。

它正在尝试保存文件的副本-我猜它正在尝试保存对文件所做的一些更改。为此,该文件需要为应用程序用户设置写入权限,否则需要更改所有者。

能否添加ls-ld/dir/和ls-l/dir/file.xlsx的输出,能否添加用于运行java代码thxYep的用户信息。。。这很可能与文件的权限有关。。。谢谢你的帮助!