用jar读取和写入同一个文件

时间:2015-04-09 14:20:20

标签: java file jar

所以,问题出在这里:我正在开发一个从.csv文件读取的Java程序,并从中构造对象。我正在使用InputStream,InputStreamReader和BufferedReader来读取文件。我正在使用的IDE是NetBeans,正在读取的文件位于src目录中。快速说明,为方便起见,我对文件名进行了硬编码,以便您了解它是如何被实际读取的。在我的实际程序中,文件名作为方法的参数传入。无论如何,它似乎在IDE中工作正常。但是当我创建一个JAR时,它并没有按照我的意愿去做。

    public void readFile(filename) throws IOException, FileNotFoundException {

                is = getClass().getResourceAsStream("file.csv"); 
                isr = new InputStreamReader(is);
                //fr = new FileReader(filename);
                br = new BufferedReader(isr);
                String info;

        while ((info = br.readLine()) != null)
         {
                        String[] tokens = info.split(",");
                        Object object = new Object();
                        object.setProperty(tokens[0]);
                        object.setAnotherProperty(tokens[1]);
                        object.setSomeOtherProperty(tokens[2]);
         }

         } 
catch (FileNotFoundException f) 
    {
        f.getMessage();
    } 
catch (IOException ioe)
     {
        ioe.getMessage();
     } 
catch (ArrayIndexOutOfBoundsException oob)
     {
        //;
     } 
catch (NullPointerException npe)
     {
        //;
     }
finally
     {
        br.close();
        isr.close();
        is.close();
     }

我更新文件的方法看起来像这样(再次,文件名已被硬编码,以便您可以更好地了解正在发生的事情):

public void updateRoom(String filename, String property1, string property2, string property3) throws FileNotFoundException

{

        for (Objects o : objects)
        {
            if (o.getProperty().equals(property1))
            {
                o.setProperty(property1);
                o.setAnotherProperty(property2);
                o.setSomeOtherProperty(property3);
            }
        }

        File file = new File("file.csv");
        PrintWriter pr = new PrintWriter(file);
        for (Object o : objects)
        {

            pr.println(o.getProperty() + "," +
                       o.getAnotherProperty() + "," +
                       o.getSomeOtherProperty())
        }
        pr.close();
 }

问题是.JAR在运行时读取文件,但它不是写入SAME文件,而是创建一个新文件并写入该文件。这是一个问题,因为每次我再次运行程序时,属性和值都保持不变。它不是从新创建的文件中读取的。它仍在从原始文件中读取,但它正在写入新文件。

我想读取和写入同一个文件。这样,如果我关闭程序并再次运行它,它将已经加载了新的属性/值。

0 个答案:

没有答案