Java 否则,请检查属性并创建新文件

Java 否则,请检查属性并创建新文件,java,jsp,Java,Jsp,作为一名新手,他正在努力编写一些代码来确定某个属性是否为空,然后在if-else语句中创建新文件,这些文件可以在if语句之外使用 我有一个网络摄像头,用户可以选择,如果这是用来捕捉一个新的照片,然后它'取代'一个散列图存储在以前的图像 这似乎有效 String camera = String.valueOf (request.getAttribute("webcamfile")); 那我想 if (camera !=null & camera !="") // check whe

作为一名新手,他正在努力编写一些代码来确定某个属性是否为空,然后在if-else语句中创建新文件,这些文件可以在if语句之外使用

我有一个网络摄像头,用户可以选择,如果这是用来捕捉一个新的照片,然后它'取代'一个散列图存储在以前的图像

这似乎有效

String camera = String.valueOf (request.getAttribute("webcamfile"));
那我想

if (camera !=null & camera !="")    // check whether the capture occured
{   
File f=new File(camera);  // if yes create new file contain the capture
}
else
{
File f=new File(itemx.getName());  // if no retrieve original path
}

System.out.println(f);
在jsp中重用elswere

hash映射和f需要在if语句之外可以访问。 我认为我需要为if创建一个空的f outisde,然后在if语句中附加到它

对于实现这一点的最佳方法(使用最少的代码)的想法,我们表示赞赏

这就是我目前拥有的,如果我取消注释显示的代码,那么f的名称将更改为null(不管相机中有什么)。在itemx.getName之后添加语句似乎会“破坏”该名称

File f=new File(itemx.getName());

//if (camera != null && !camera.isEmpty()) {
//f=new File(camera);
//}

System.out.println(f);
System.out.println(f.toString()); 

File uploadedFile = new File(pageContext.getServletContext().getRealPath("/uploads")+"/"+prefix+f.getName());

itemx.write(uploadedFile)
str2="uploads/"+prefix+f.getName();
hash.put(itemx.getFieldName(), str2);
问候
活动的

您需要在if/else范围之外初始化一个新的文件实例(也可以为空),以便能够在其他地方访问

File f = null;
为了防止在print语句中抛出异常,在调用println之前,不要忘记检查“f”是否仍然为null

如果:

f = new File(camera)
除此之外:

f= new File(xxxx)

如果我理解正确,并且您希望您的默认文件值为“itemx.getName()”—您必须使用此值初始化文件,然后在request.getAttribute(“webcamfile”)不为空时覆盖它

那么你应该写这样的东西:

String camera = String.valueOf (request.getAttribute("webcamfile"));
File f = new File(itemx.getName());
if (camera != null && !camera.isEmpty()) {
    f=new File(camera);
}
System.out.println(f);

您需要在if/else范围之外初始化一个新的文件实例(也可以为null),以便能够在其他地方访问

File f = null;
为了防止在print语句中抛出异常,在调用println之前,不要忘记检查“f”是否仍然为null

如果:

f = new File(camera)
除此之外:

f= new File(xxxx)

如果我理解正确,并且您希望您的默认文件值为“itemx.getName()”—您必须使用此值初始化文件,然后在request.getAttribute(“webcamfile”)不为空时覆盖它

那么你应该写这样的东西:

String camera = String.valueOf (request.getAttribute("webcamfile"));
File f = new File(itemx.getName());
if (camera != null && !camera.isEmpty()) {
    f=new File(camera);
}
System.out.println(f);

我喜欢这种情况下的三元运算符

File f = new File(camera !=null && !camera.equals("") ? camera : itemx.getName());
只要一行代码,就可以编译了,因为
f
存在于范围中

注:

  • 使用
    &&
    防止
    摄像机==null时出现
    空点异常
  • String.equals
    比较字符串的值,而不是
    =
  • camera.equals(“”)与
    camera.isEmpty()相同
这种情况也可以减少:

camera !=null && !camera.equals("")

一个快速的测试来展示它是如何在

上工作的,对于这种情况,我喜欢三元运算符

File f = new File(camera !=null && !camera.equals("") ? camera : itemx.getName());
只要一行代码,就可以编译了,因为
f
存在于范围中

注:

  • 使用
    &&
    防止
    摄像机==null时出现
    空点异常
  • String.equals
    比较字符串的值,而不是
    =
  • camera.equals(“”)与
    camera.isEmpty()相同
这种情况也可以减少:

camera !=null && !camera.equals("")


一个快速测试来展示它在

上是如何工作的,这将值得扩展您的答案,并解释为什么您认为此代码可以解决问题。感谢@Faber和Laststrinx先生以及所有响应者,现在似乎还可以。值得扩展您的答案,并解释为什么您认为此代码可以解决问题。感谢@Faber和Laststrinx先生,以及所有响应者,现在似乎还可以。感谢Faber,非常感谢,尽管我现在发现str无法解决。感谢您的想法。Sry当然“str”应该是“照相机”!我纠正了它。这只是一种方法,你可以用它来检查字符串是否为空hello@Faber,bizarely(作为AxeIH的代码)文件f=new File(itemx.getName()之后的任何代码,例如“if”,似乎会将散列图(即test.jpg)中的原始名称更改为null(System.out.println(f),即使相机为null或空,也会生成null)。是否确定itemx.getName()当时在代码中返回正确的路径名(即test.jpg)?如果使用System.out.println打印文件,则会调用toString()方法,因此如果文件创建正确,则应打印“test.jpg”。Hello@Faber,是的,这是一个标准,toString会生成Male2.jpg(使用当前照片)。任何放在itemx.getName之后的内容(如if语句)似乎都会将名称还原为null。这超出了我的知识范围。我将添加用于原始问题的实际代码。感谢Faber,非常感谢,尽管我现在无法解决str。感谢您的想法。Sry当然“str”应该是“照相机”!我更正了它。这只是一种可以在字符串上使用的方法,用于检查字符串是否为空的Hello@Faber,bizarely(作为AxeIH的代码)文件f=new File(itemx.getName()之后的任何代码,如“if”,似乎会将哈希映射(即test.jpg)中的原始名称更改为null(System.out.println(f),即使相机为null或空,也会生成null)。是否确定itemx.getName()当时在代码中返回正确的路径名(即test.jpg)?如果使用System.out.println打印文件,则会调用toString()方法,因此如果文件创建正确,则应打印“test.jpg”。Hello@Faber,是的,这是一个标准,toString会生成Male2.jpg(使用当前照片)。任何放在itemx.getName之后的内容(如if语句)似乎都会将名称还原为null。这超出了我的知识范围。我会将实际使用的代码添加到原始问题中。谢谢@AxeIH,这是一行简单得多的代码,但在标记上会出现语法错误)在照相机之后,虽然语法似乎正确。想法?@Active,是的,抱歉我算错了括号。我已经编辑了答案再次感谢@AxeIHHello@AxeIH,页面上任何地方都看不到v,但你的答案是“最简单的”(在我看来)。再次感谢,没有这个论坛我不会有多大进步。对不起@AxeIH,我也需要检查一下