Je ne suis pas sûr que les données dynamiques de magasin en pot est une bonne idée. Si vous créez une application locale dynamique, vous pouvez utiliser répertoire de travail. Ou vous pouvez utiliser la connexion http pour travailler avec stockage d'images à distance. Ou vous pouvez utiliser un DB.
Ou vous développer quelque chose comme interface flexible tels que:
public interface ImageProvider {
public void storeImage(MyImageClass image, String imageLable);
public MyImageClass getImage(String imageLable);
}
.
et la mettre en œuvre par les classes tant que votre demande est en cours d'élaboration:
public class ImageJarProvider implements ImageProvider { // jar solution
private File jar = null;
public ImageJarProvider(File jar) {
this.jar = jar;
}
public void storeImage(MyImageClass image, String imageLable) {
// implement jar repack:
// use classes JarFile, ZipEntry and ZipOutputStream.
// unpack file
JarFile jarFile = new JarFile(jar);
ZipEntry inputEntry = jarFile.getEntry("path/you/need/to/file");
File outFile = new File("temp.jar");
FileOutputStream zipFileStream = new FileOutputStream(outfile);
ZipOutputStream zipOutStream = new ZipOutputStream(new BufferedOutputStream(zipFileStream));
ZipEntry entry = new ZipEntry("filename you pack");
zipOutStream.putNextEntry(entry);
//pack all your files and pack new image.
//this code just shows how to unpack and pack zip(jar)-archives.
BufferedInputStream origin = new BufferedInputStream(new jarFile.getInputStream(inputEntry));
byte data[] = new byte[2048];
int count = 0;
while((count = origin.read(data, 0, data.length)) != -1) {
zipOutStream.write(data, 0, count);
}
zipOutStream.close();
origin.close();
}
public MyImageClass getImage(String imageLable) {
// implement unpack of image
...
}
}
public class ImageHttpProvider implements ImageProvider { // http solution
public ImageHttpProvider(String host, int port) {
...
}
public void storeImage(MyImageClass image, String imageLable) {
// implement image upload
...
}
public MyImageClass getImage(String imageLable) {
// implement HTTP image download
...
}
}
public class ImageDirProvider implements ImageProvider { // working directory solution
public ImageDirProvider(File dir) {
...
}
public void storeImage(MyImageClass image, String imageLable) {
// implement file work
...
}
public MyImageClass getImage(String imageLable) {
// implement file work
...
}
}
public class ImageDBProvider implements ImageProvider { // DB solution
public ImageDBProvider(String jdbcURL, Properties jdbcProperties) {
...
}
public void storeImage(MyImageClass image, String imageLable) {
// implement jdbc clob
...
}
public MyImageClass getImage(String imageLable) {
// implement jdbc clob
...
}
}
.
Vous pouvez organiser le stockage et la lecture des images comme vous le souhaitez sans modifier le moteur de votre application.
Le lien montre 404. –
mis à jour le lien –
@Jigar: Sa solution n'est pas parfaite comme je peux le voir: si l'utilisateur supprime le répertoire. Alors? –