在netbeans中,如何在部署jar文件后保存或访问映像



我正在尝试使用NetBeans在Java中创建一个混乱管理应用程序。我想将成员的图像保存在我的src目录内的指定文件夹中。我刚刚创建了一个名为EmpImgs的文件夹,用于存储员工图像。下面是我的代码:

File srcDir = new File(file);    // current path of image     
File dstDir = new File("src\J_Mess_Mgnt\EmpImgs\"+Txt_C_G_M_M_ID.getText());
objm.copyFile(srcDir, dstDir);`  // copy image from srcDir to dstDir 

这里我使用另一个类将图像复制到预定义的文件夹中,并根据它们的ID重命名图像。

Java IDE中一切正常。

但不幸的是,在生成可执行的.jar文件之后,这段代码将无法工作。我无法保存或访问该目录下的任何图像文件。

我刚刚浏览了这个网站,但是我没有找到合适的答案。

所有我需要的是保存和编辑图像在jar文件夹

嘿,嗨,伙计,你需要帮助。这是一个重复的,但我会放你一马,也许你以后应该删除它。因此,回到基础,jvm运行字节代码,这是您从编译java源代码到.class文件中获得的。这与C和c++不同,如果你只得到一个。exe。你不希望在所有文件夹中给用户一堆.class文件,他们可以编辑这些文件,并且必须在命令行上运行命令,而是给他们一个所谓的"存档",这只是一个不可变的文件结构,这样他们就不会搞砸应用程序,在java中被称为jar。他们只需双击归档文件(这是一个jar), jvm就会调用MetaInf目录中指定的main方法(只是关于jar的一些信息,与其他编程语言中的清单相同)。

现在请记住您的应用程序现在是一个jar!它是不可改变的!原因我已经解释过了你不能在那里保存任何数据!您的程序仍然可以在命令行和ide中工作,因为它的工作方式就好像您使用的应用程序是作为带有.class文件的一堆文件夹分发的,并且您可以写入此位置。

如果你想在应用程序中打包资源,你需要使用streams (google一下)。但请记住!这样你就不能在jar中保存更多的资源了!你得去别的地方写!也许可以使用user。主目录!或者从类路径指定的位置,照片将在罐子旁边!有时您可能需要java应用程序的安装程序,但如果不需要,通常不希望创建额外的工作。

我终于找到了适合我问题的答案。不可能将映像或文件复制到执行jar文件夹。所以我用了一个不同的想法。创建一些文件夹(根据我们的要求),我的可执行jar文件夹所在的位置(无论哪个驱动器或位置在哪里)。代码是…

String PRJT_PATH="";          //variable to store path of working directory.
private void getdire() throws IOException{
    File f=new File(".");
    File[] f1=f.listFiles();
    PRJT_PATH=f.getCanonicalPath();  //get path details.for eg:-E:/java/dist
}
private void new_Doc_folder(){  //function for creating new folders
try{
    String strManyDirectories="Docs"+File.separator+"Bil_Img";   //i need to  create 2 folders,1st a folder namedDocs and In Docs folder another folder named Bil_Img 
   String SubDirectories="Docs"+File.separator+"EmpImgs";  //same as above but keep in mind that It will not create a Same folder again if already exists,
    // Create one directory
    boolean success = (new File(strManyDirectories)).mkdirs(); //create more than one directory
    boolean success1 = (new File(SubDirectories)).mkdir();    //Creates a single directory
        if (success && success1) {
        }    
}catch (Exception e){//Catch exception if any
  System.err.println("Error: " + e.getMessage());
}

It works Successfully.

登记

相关内容

  • 没有找到相关文章

最新更新