作为一个新手在某些代码中苦苦挣扎以确定属性是否为空,然后在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);
此致 活性
答案 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 !="")