URL和readbuffer不会导出

时间:2012-04-24 02:48:12

标签: java

我有一个庞大的计划,我花了100多个小时。即使它在Ecipse中运行良好,但在导出它时它也无法工作。我用一个代码制作了一个较小的程序来测试它。我搜索并更改了我的代码,当我导出并运行我的jar文件时,我仍然无法使我的程序工作。它在Eclipse中运行良好。我已经尝试过文件阅读器,流,缓冲,站在我的头上,并改为我在网上看到的有关读取jar文件中包含的文件的任何内容。我是编码的新手,所以有些事情仍然让我困惑。我将.java更改为.zip并查看了各个部分,文件就在那里。

我的阅读代码是

private void readFile(){
    try {
        System.out.println("starting array");       
        String[] myarray;  
        myarray = new String[5];  
        System.out.println("myarray"+myarray);  
        url = getClass().getResource("classifyinginfo.txt"); 
        System.out.println("url is "+url);
        readbuffer = new BufferedReader(new FileReader(url.getPath()));          
        line1 = readbuffer.readLine();
        line1 = readbuffer.readLine();                  
        line1 = readbuffer.readLine();                  
        line1 = readbuffer.readLine();                                      
        { String splitarray[] = line1.split(",");
            firstentry = splitarray[0];
            myarray[0]=splitarray[3];
            myarray[1]=splitarray[4];
            myarray[2]=splitarray[5];
            myarray[3]=splitarray[6];
            myarray[4]=splitarray[7]; 

            //line2 and 3 readbuffer etc

            Arrays.sort(myarray);
            for(int i=0; i < myarray.length; i++){
                System.out.println(myarray[i]);

                textArea.append(myarray[i]+"\n");}
        }       


        System.out.println(Arrays.toString(myarray)); 
        //  textArea.setText(Arrays.toString(myarray));


        readbuffer.close(); } catch (IOException e) {
        System.out.println("we have an error");}           
    System.out.println("Line: " + line1 );
} 

请告诉我如何在Eclipse内外完成这项工作。

1 个答案:

答案 0 :(得分:1)

你这样做:

url = getClass().getResource("classifyinginfo.txt"); 
readbuffer = new BufferedReader(new InputStreamReader(url.openStream()));          
line1 = readbuffer.readLine();

FileReader类可以读取磁盘上的各个文件,这就是全部。但是,一旦有了URL,就不需要使用它了。以这种方式修改,无论文件是否在jar中,程序都将工作。

您实际上可以完全取消URL,只需执行此操作:

readbuffer =
    new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("classifyinginfo.txt")));          
line1 = readbuffer.readLine();