if else检查属性并创建新文件

时间:2017-01-18 10:38:11

标签: java jsp

作为一个新手在某些代码中苦苦挣扎以确定属性是否为空,然后在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中的文件

哈希映射和f需要在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);

此致 活性

3 个答案:

答案 0 :(得分:1)

您需要在if / else作用域之外初始化一个新的File实例(也可以为null),以便能够在其他地方访问。

File f = null;

为了防止在您的打印声明中抛出异常,请不要忘记检查" f"在调用println之前仍为null。

里面的if:

f = new File(camera)

在其他地方:

f= new File(xxxx)

如果我理解正确,你希望你的默认文件值为" itemx.getName()" - 如果request.getAttribute(" webcamfile")不为null,则必须使用此值初始化File,然后覆盖它。

然后你应该写这样的东西:

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);

答案 1 :(得分:1)

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

File f = new File(camera !=null && !camera.equals("") ? camera : itemx.getName());

一行,现在将编译范围内存在f

注意:

  • &&
  • 的情况下,使用NullPointerException来阻止camera == null
  • String.equals比较字符串的值,而不是!=
  • camera.equals("")camera.isEmpty()
  • 相同

条件也可能会减少:

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

快速测试以展示它如何在ideone

上运行

答案 2 :(得分:0)

if (camera !=null && camera !="")