【问题标题】:Set file permission in java 5在java 5中设置文件权限
【发布时间】:2012-06-21 04:23:41
【问题描述】:

我正在使用以下代码上传图片。问题是上传图片后我无法更改文件权限。我的文件权限默认设置为rw-r--r-- (0644)。是否可以更改文件权限或默认设置为0777?它在我的本地系统中运行良好。但无法更改我的 linux 服务器中的权限。

    <%
    try

    {

        int filesize=0;
        String fieldname="",fieldvalue="",filename="",content="",bookid="",bkdescription="";        

        try {
            List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
            for (FileItem item : items) {
                if (item.isFormField()) {
                    fieldname = item.getFieldName();
                    fieldvalue = item.getString();                 
                    if(fieldname.equals("homeid")){
                        bookid=fieldvalue;
                    }

                    if(fieldname.equals("bkdescription")){
                        bkdescription=fieldvalue;
                    }             

                } else {
                    try{
                    fieldname = item.getFieldName();
                    filename = FilenameUtils.getName(item.getName());
                    InputStream filecontent = item.getInputStream();
                    filesize=(int)item.getSize();
                    filename="literal_"+bookid+".jpg";
                    if(filesize>0){                     
                    byte[] b=new byte[filesize];                  
                    int c=0;                                   

                    File f=new File(getServletConfig().getServletContext().getRealPath("/")+"/imagesX");
    String filePah=getServletConfig().getServletContext().getRealPath("/")+"/imagesX";

                    if(f.isDirectory())
                    {
                        String fl[]=f.list();
                        for(int i=0;i<fl.length;i++)

                            {

              File fd=new File(getServletConfig().getServletContext().getRealPath("/")+"/imagesX/"+fl[i]);
                             if(fd.getName().equals(filename))
                             fd.delete();

                        }

                    }

                    if(!f.exists())
    {
            new File(filePah).mkdir();      
f.mkdir()
    }                

   java.io.FileOutputStream fout=new java.io.FileOutputStream(getServletConfig().getServletContext().getRealPath("/")+"/imagesX/"+filename);    

                    while((c = filecontent.read(b)) != -1 )
                    {
                        fout.write(b, 0, c);

                    }

                    fout.close();
                    filecontent.close();
                    }

                    }catch (Exception e) {
                System.out.println("Exception in creation of file      :"+e);

                    }

                }

            }

        } catch (FileUploadException e) {
            throw new ServletException("Cannot parse multipart request.", e);
        }

    }

    catch(Exception exp)

    {
        out.println(exp);
    }

    %>

【问题讨论】:

标签: linux jsp file-permissions java-5


【解决方案1】:

您不能从 java 代码中更改文件权限。

对于新文件,您系统的默认 umask 设置为 0644。更改默认 umask 不是一个好主意。

你需要做的是将你的目录的权限设置为0777,然后将你的目录的ACL重新定义为递归,这样在里面创建的所有新文件都会继承相同的权限。

这是一个显示如何进行的链接 - https://superuser.com/questions/151911/how-to-make-new-file-permission-inherit-from-the-parent-directory

【讨论】:

    【解决方案2】:

    另一种解决方案是使用系统命令 chmod 从外部更改权限。

    例子:

    public static void runCmd (String[] cmd) {
    
        try {
            Process p = Runtime.getRuntime().exec(cmd);
            BufferedReader r = new BufferedReader(
                new InputStreamReader (
                    p.getInputStream()
                )
            );
        } catch(Exception e) {
        }
    }
    
        runCmd(new String[] {
            "/bin/chmod",
            "755",
            "/path/to/your/script"
        });
    

    附:您是否还尝试从 Oracle 数据库中的存储过程调用 Java?

    【讨论】:

      猜你喜欢
      • 2014-07-03
      • 2011-11-27
      • 1970-01-01
      • 2015-10-18
      • 1970-01-01
      • 2014-09-28
      • 1970-01-01
      • 2014-09-11
      相关资源
      最近更新 更多