package org.dddlib.image.file;
import org.apache.commons.io.FileUtils;
import org.dddlib.image.api.ImageAccess;
import org.dddlib.image.api.pojo.ImageFile;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
/**
* Created by lingen on 14-7-16.
*/
public class FileImageAccess implements ImageAccess {
private static String FILE_SUFFIX = "__";
private String directory;
public FileImageAccess(String directory) {
this.directory = directory;
validateDiretor();
}
@Override
public String saveImageFile(byte[] content, String fileName) {
String uuid = UUID.randomUUID().toString().toUpperCase();
String newFileName = uuid + FILE_SUFFIX + fileName;
try {
FileUtils.writeByteArrayToFile(new File(directory + File.separator + newFileName), content);
} catch (IOException e) {
e.printStackTrace();
}
return newFileName;
}
@Override
public ImageFile getImageFile(String imageId) {
File file = new File(directory + File.separator + imageId);
try {
if (file.exists()) {
byte[] contents = FileUtils.readFileToByteArray(file);
String fileName = imageId.substring(imageId.indexOf(FILE_SUFFIX) + FILE_SUFFIX.length());
ImageFile imageFile = new ImageFile(contents, fileName);
return imageFile;
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
private void validateDiretor() {
File file = new File(directory);
if (file.exists() && file.isFile()) {
throw new RuntimeException("请指定目录");
}
if (file.exists() == false) {
file.mkdirs();
}
}
}