当前位置: 代码迷 >> java >> 在netbeans中,如何在部署jar文件后保存或访问映像
  详细解决方案

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

热度:10   发布时间:2023-07-31 12:06:33.0

我正在尝试使用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的一些信息,与其他编程语言中的清单相同)。

现在记住您的应用程序现在是一个罐子! 这是一成不变的! 我所解释的原因。 您无法再将数据保存在那里! 您的程序仍将在命令行和IDE中运行,因为它的工作方式就像您使用的应用程序一样,被分发为带有.class文件的一堆文件夹,您可以写入此位置。

如果要使用应用程序打包资源,则需要使用流(将其谷歌搜索)。 但要记住! 然后您就无法将更多资源保存到jar中! 您需要在其他地方写! 也许使用user.home目录! 或从课程路径指定的位置,照片将直接放在罐子旁边! 有时,您可能需要Java应用程序的安装程序,但通常您不需要创建额外的工作。

最后我找到了我的问题的答案。无法将图像或文件复制到执行jar文件夹。所以我使用了一个不同的Idea。创建一些文件夹(根据我们的要求),将我的可执行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());
}

它成功运行。

Regds

  相关解决方案