怪しげなバグを記録する

1857 ワード


Map map = Maps.newHashMap();
if (key.equals(SignUtils.getKey(url))) {
try {
String path = request.getSession().getServletContext().getRealPath(url);
String[] fv = path.split("\\.");
File newFile = new File(fv[0]+"_sign.png");
// , ,
// String newUrl = fv[0]+"_sign.png";
// String newFilePath = request.getSession().getServletContext().getRealPath(newUrl);//fv[0]+"_sign.png";
// File newFile = new File(newFilePath);
File oldFile = new File(request.getSession().getServletContext().getRealPath(url));
InputStream in = new FileInputStream(oldFile);
byte[] b = IOUtils.toByteArray(in);
b = ImageUtils.transferAlpha(ImageUtils.ByteToBufferedImage(b), 150, x, y, width, height, rotate);
Files.write(b,newFile);

map.put("result", true);
map.put("url", SignUtils.getUrl()+newFile.getName());
} catch (Exception e) {
e.printStackTrace();
map.put("result", false);
map.put("message", " :"+e.getMessage());
}
} else {
map.put("result", false);
map.put("message", " ");
}
response.flushBuffer();
return map;

このプログラムは,一つのウェブディレクトリの下のピクチャをちくじ処理するが,別のネーミング保存処理を行い,新しいピクチャのパスを返すと,注釈で落とした3行ですぐにアクセスできず,書き方を変えればよい.
コメントを見てください.実は2つの取得した絶対パスは同じですが、2つ目(コメントが落ちたコード)は遅延があり、3、4秒後にアクセスできます.