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

Java 在netbeans中,部署jar文件后如何保存或访问映像,java,netbeans,Java,Netbeans,我正在尝试使用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.co

我正在尝试使用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重命名图像

一切都在JavaIDE中正常工作

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

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


我只需要在jar文件夹中保存和编辑图像

呵呵,你好,伙计,你需要一些帮助。这是一个重复,但我会给你一些松懈,也许你应该删除这个以后。回到基础,jvm运行字节码,这是从编译java源代码到.class文件中得到的。现在这和C和C++不同了,你只得到了.exe。您不希望在所有这些文件夹中为用户提供一堆.class文件,用户可以对这些文件进行编辑,并且必须在命令行上运行命令,而是为用户提供所谓的“归档”,这只是一个可修改的文件结构,这样他们就不会破坏应用程序,在java中称为jar。他们可以双击归档文件(这是一个jar),jvm将调用MetaInf目录中指定的main方法(只是一些关于jar的信息,与其他编程语言中的清单相同)

现在请记住,您的应用程序现在是一个jar!它是不变的!为了我解释的原因。您无法在那里保存更多数据!您的程序仍将在命令行和IDE中工作,因为它的工作方式与您使用的应用程序类似。您的应用程序被分发为一堆带有.class文件的文件夹,并且您可以写入此位置


如果您想将资源打包到应用程序中,您需要使用streams(谷歌it)。但是记住!然后,您无法将更多资源保存到jar中!你需要去别的地方写!可能使用user.home目录!或者从类路径指定的位置,照片就在jar旁边!有时您可能需要java应用程序的安装程序,但如果不需要,通常您不想创建额外的工作。

呵呵,你好,您需要一些帮助。这是一个重复,但我会给你一些松懈,也许你应该删除这个以后。回到基础,jvm运行字节码,这是从编译java源代码到.class文件中得到的。现在这和C和C++不同了,你只得到了.exe。您不希望在所有这些文件夹中为用户提供一堆.class文件,用户可以对这些文件进行编辑,并且必须在命令行上运行命令,而是为用户提供所谓的“归档”,这只是一个可修改的文件结构,这样他们就不会破坏应用程序,在java中称为jar。他们可以双击归档文件(这是一个jar),jvm将调用MetaInf目录中指定的main方法(只是一些关于jar的信息,与其他编程语言中的清单相同)

现在请记住,您的应用程序现在是一个jar!它是不变的!为了我解释的原因。您无法在那里保存更多数据!您的程序仍将在命令行和IDE中工作,因为它的工作方式与您使用的应用程序类似。您的应用程序被分发为一堆带有.class文件的文件夹,并且您可以写入此位置


如果您想将资源打包到应用程序中,您需要使用streams(谷歌it)。但是记住!然后,您无法将更多资源保存到jar中!你需要去别的地方写!可能使用user.home目录!或者从类路径指定的位置,照片就在jar旁边!有时,您可能需要java应用程序的安装程序,但如果不需要,通常您不想创建额外的工作。

最后,我找到了一个适合我的问题的答案。无法将图像或文件复制到executive 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());
}
它成功地工作了


Regds

最后我找到了适合我问题的答案。不可能将图像或文件复制到executive 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());
}
它成功地工作了


Regds

可能重复的可能重复的可能重复的谢谢先生,谢谢你给我这些有价值的信息。我认为最好在jar文件夹之外创建一个文件夹。使用一些命令,对吧。让我试试。任何人对我的主题有一些额外的想法、知识或信息,请给我一个简短的介绍,提前谢谢,不用担心,我不知道学习所有这些东西的最佳方法是什么,我想这是一种经验,所以如果你坚持下去,你会学到的。首先,我建议在做一般性学习(如遵循这些教程)和寻找问题的具体答案之间找到平衡,因为通常你不知道正确的问题是什么时候开始的。好的,先生。我不是一个有经验的人。因此,我期待你对我的问题给予真诚的帮助和建议,,谢谢你,先生,谢谢你给我这些有价值的信息。我认为最好在jar文件夹之外创建一个文件夹。使用一些命令,对吧。让我试试。任何人对我的主题有一些额外的想法、知识或信息,请给我一个简短的介绍,提前谢谢,不用担心,我不知道学习所有这些东西的最佳方法是什么,我想这是一种经验,所以如果你坚持下去,你会学到的。我会第一个建议