2015-07-19 41 views
1

我正在尝试使用NetBeans在Java中制作一个混乱的管理应用程序。我想将会员的图像保存在我的src目录内的指定文件夹中。我刚刚创建了名为EmpImgs的文件夹用于存储员工图像。这里是我的代码:在netbeans中,如何在部署jar文件后保存或访问映像

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文件夹

+0

[访问一个罐子内的资源(在Netbeans的工作而不是在命令行)]的可能重复(http://stackoverflow.com/questions/2168266/accessing-a-resource-within-在网络上但不是在命令行上的工作) –

回答

0

最后我找到了一个适合我的问题的答案。它不可能将图像或文件复制到行政jar文件夹中。因此我使用了不同的Idea.Create一些文件夹(根据我们的要求),其中我的可执行文件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

0

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

现在记住你的应用程序现在是一个罐子!它是不可改变的!我解释了原因。你不能在那里保存数据!您的程序仍然可以在命令行和IDE中工作,因为它的工作方式与您使用应用程序时一样,会以.class文件的形式分配到一堆文件夹中,并且您可以写入该位置。

如果你想打包你的应用程序的资源,你需要使用流(谷歌它)。但要记住!你不能那么节省更多的资源到罐子里!你需要写在别的地方!也许使用一个user.home目录!或从班级路径中指定的位置,并且照片将紧挨着罐子!有时候你可能需要为你的java应用程序安装一个安装程序,但是如果你不需要的话,通常你不想创建额外的工作。

+0

谢谢先生,谢谢你给我这个有价值的信息。我认为最好在jar文件夹外创建一个文件夹。使用一些命令,对。让我试试。和任何人有一些额外的想法或知识或有关我的主题的信息请给我一个简短的,在此先感谢, – Vijay

+0

不用担心,我不知道什么是最好的方式去了解所有这些东西,它带有经验我如果你只是坚持下去,你会学到它。我会首先建议找到一般学习之间的平衡,就像按照这些教程http://www.newthinktank.com/videos/java-video-tutorial/寻找具体的问题答案,因为通常你不知道正确的问题是你什么时候开始。 – Snickers3192

+0

好吧,先生,我不是一个有经验的人。所以我希望你的真诚帮助和建议,以我的问题。,问候, – Vijay