Java Can';你不知道文件名吗?总是空的

Java Can';你不知道文件名吗?总是空的,java,html,Java,Html,HTML 我在这里得到一个null异常(在最后一个if语句中): 您的代码有问题(我甚至不是Java爱好者) 您在此处将cvFile设置为null FileItem cvFile = null; 如果If的第一个分支是take(item.isFormField()),则cvFile将保持空值(其值从初始化时起从未更改) 您在此处使用了cvFile.getName(),但是cvFile可能仍然为空。您在哪里通过setName或其他方式将cvFile.name设置为某物?我想你的名字是空的。我看不

HTML

我在这里得到一个null异常(在最后一个if语句中):


您的代码有问题(我甚至不是Java爱好者)

您在此处将cvFile设置为null

FileItem cvFile = null;
如果If的第一个分支是take(
item.isFormField()
),则
cvFile
将保持空值(其值从初始化时起从未更改)


您在此处使用了
cvFile.getName()
,但是
cvFile
可能仍然为空。

您在哪里通过setName或其他方式将cvFile.name设置为某物?我想你的名字是空的。我看不出它是在项目上设置的。我认为see cvFile被分配给了一个对象,但是您尝试通过getName访问的对象名为null。

我认为最初也是这样。但是在可疑的NPE行附近,他有一个
if(name!=null&&cvFile!=null)
,这将使
cvFile
显然不是该语句中的null对象。然而,我真的不知道该语句中还有什么是空的。我想知道这段代码是否真的是NPE发生时执行的代码。没有区别。我把FileItem放在布尔值之前,结果是一样的。@Rob Huska,你说得对。我错过了下一步的零分测试。但是我看不到它可能在其他任何地方,并且所讨论的行访问
directoryname
cvFile.getName()
;在这一点上,AFAICS,
cvFile
是唯一可以为null并导致异常的东西。无论如何,不要吃那些
exception
s。至少将堆栈跟踪写入日志或stdout。还值得注意的是,新文件(path)在路径为null的情况下抛出NullPointerException。
// Check that we have a file upload request
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);
        if(isMultipart && request.getContentType() != null)
        {
            // Create a factory for disk-based file items
            FileItemFactory factory = new DiskFileItemFactory();

            // Create a new file upload handler
            ServletFileUpload upload = new ServletFileUpload(factory);

            // Parse the request
            List /* FileItem */ items = null;
            try
            {
                items = upload.parseRequest(request);
            }
            catch(FileUploadException e) {}

            // Process the uploaded items
            Iterator iter = items.iterator();

            FileItem cvFile = null;
            while(iter.hasNext())
            {
                FileItem item = (FileItem)iter.next();

                if(item.isFormField())
                {
                    if(item.getFieldName().equals("name"))
                        name = item.getString();
                }
                else
                {
                    cvFile = item;
                }

                if(name != null && cvFile != null)
                {
                    directoryName = request.getRealPath("/") + "/Uploads/Companies/" + name + "/";
                    File theDir = new File(directoryName);
                    if (!theDir.exists())
                        theDir.mkdir();

                    File uploadedFile = new File(directoryName + cvFile.getName());
                    try
                    {
                        cvFile.write(uploadedFile);
                    }
                    catch(Exception e) {}
                }
            }
File uploadedFile = new File(directoryName + cvFile.getName());
FileItem cvFile = null;
while(iter.hasNext())
{
   FileItem item = (FileItem)iter.next();

   if(item.isFormField())
   {
     if(item.getFieldName().equals("name"))
        name = item.getString();
   }
   else
   {
      cvFile = item;
   }
File uploadedFile = new File(directoryName + cvFile.getName());