2013-04-02 32 views
-1

嗨,大家好我是新来的java,我的一个要求是创建一个程序,使用户能够添加编辑删除视图记录,如员工,地址,性别,状态,工作日和每天的费率保存在一个记事本中,在添加之后,程序将计算税款和捐款额等,这也将保存到不同的txt文件,也可以查看和编辑。我的问题是我不能在txtfile上写入计算并获得“FileNotFoundException”。继承人我的代码在读取和写入txt文件FileNotFoundException

public static void payrollReadFromFile(String filename) { 

     // initializes br identifer as BufferedReader. 
     BufferedReader br = null; 

     payrolls.clear(); // removes all elements in arraylist employees 

     try { 
      // instantiate br as FileReader with filename param 
      br = new BufferedReader(new FileReader(filename)); 
      try { 

       String name;    
       double gincome, nincome, deduc, sss, pagibig, phil = 0; // initialize identifiers 

       // reads each line through br identifier, and stores it on 
       // temporary identifiers 
       // loop continues until null is encountered 
      while ((name = br.readLine()) != null) { 

        gincome = Double.parseDouble(br.readLine()); 
        sss = Double.parseDouble(br.readLine()); 
        pagibig = Double.parseDouble(br.readLine()); 
        phil = Double.parseDouble(br.readLine()); 
        deduc = Double.parseDouble(br.readLine()); 
        nincome = Double.parseDouble(br.readLine());      

        // adds the data to employees arraylist 
        payrolls.add(new Person(name, gincome, sss, pagibig, phil,deduc, nincome)); 
       } 
      } finally { 
       br.close(); // closes BufferedReader 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 



    // method which writes data into parameter 'filename' 
    // uses PrintWriter and FileWriter 
    public static boolean payrollWriteToFile(String filename) { 
     boolean saved = false; 
     PrintWriter pw = null; // pw is a PrintWriter identifier 

     try { 
      // instantiate pw as PrintWriter, FileWriter 
      pw = new PrintWriter(new FileWriter(filename)); 

      try { 

       // for each loop. each data from employees is written to parameter 
       // filename 
       for (Person payroll : payrolls) { 
             // pw.println(employee.getId()); 
        pw.println(payroll.getName()); 
        pw.println(payroll.getGincome()); 
        pw.println(payroll.getSss()); 
        pw.println(payroll.getPagibig()); 
        pw.println(payroll.getPhil()); 
        pw.println(payroll.getDeduc()); 
        pw.println(payroll.getNincome()); 


       } 
       saved = true; 
      } finally { 
       pw.close(); 
      } 
     } catch (IOException e) { 

      e.printStackTrace(); 
     } 
     return saved; 
    } 

有人可以帮助我吗?我不知道该怎么办。在此先感谢

+0

FileNotFound,正是这样,你试图打开一个不存在的文件。 –

+0

请帮我发邮件给我@ [email protected] – user2014814

+0

你确定你的文件在正确的位置吗? 'System.getProperty(“user.dir”);''在运行时会告诉你程序的当前目录。 – RaptorDotCpp

回答

1

关于异常的好处在于堆栈跟踪(可能是您在控制台输出中看到的内容)告诉您确切的哪一行代码抛出异常。最有可能的是这一行:

br = new BufferedReader(new FileReader(filename)); 

看那个传递文件到您payrollReadFromFile方法的代码。您传递的文件不在您认为的位置。传递File对象而不是String可能更有意义,因为File对象不仅包含文件的名称,还包含该文件的完整路径。

+0

FileNotFoundException现在已经成为我写在txt文件中的问题。我无法接受它 – user2014814

+0

我用PrintWriter和FileWriter .. 我的代码是: PrintWriter pw = null; \t pw = new PrintWriter(new FileWriter(filename)); – user2014814

+0

你的问题被拒绝了,因为它不完全清楚你的问题是什么。试着问一个新的问题,并清楚地知道你的错误是什么以及你已经尝试了什么。你的评论中的一行代码没有任何错误。帮助我们理解你想要做什么以及你的错误是什么(当然也会发布相关的代码),我或其他人会回答它。 – Thorn

-1

您可以抛出异常,如:

public static void payrollReadFromFile(String filename) throws FileNotFoundException { 

此外,我建议你查查try和catch方法。

+1

这是如何帮助他们?他们已经在使用try-catch,问题是文件没有找到,并不是他们不知道FileNotfoundException是什么。 – RaptorDotCpp

+0

这帮不了他.. !! –

0

这个问题和答案的关键在于代码的级别和问题的级别是完全不同的。在我看来,这段代码是由具有相当数量java知识的人编写的,但是(由他们自己承认)询问的人是新手。所以选择是两个:

1)雇用我们的一个人为您解决它。你可以雇用我,但我很贵,还有其他人会以便宜的价格做到这一点。

2)学习Java,如果你是学生上课,那么你应该学习这一点。把它分解慢一些。

这里是一个调试尖端:

的System.out.println(文件名);

这样你可以看到你正在寻找的文件名是。

它不是stackoverflow贡献者解决您的问题的责任。我们在这里帮助你学习。