簡體   English   中英

多個If Else語句上的PrintWriter

[英]PrintWriter on Multiple If Else Statement

我有一個可以在控制台上正常打印的工作程序。 但是,如果要在輸出文件中打印它,我會遇到麻煩。 它僅執行Else語句。 它不會進入If and Else語句中。

 public void processFile()
  {
    final String IN = "IN"; 
    final String OUT = "OUT";
    final String CLOSE = "CLOSE";
    PrintWriter fileOut;

    final String FILE_NAME_IN  = "Events.txt";
    final String FILE_NAME_OUT = "SystemLog.txt";
    BufferedReader fileIn;
    String inputLine;

    try
    {
      // print out initial state 
      fileOut = new PrintWriter(new FileWriter(FILE_NAME_OUT));
      System.out.println("---------");
      fileOut.println("---------");
      System.out.println("INCOMING PROCESS");
      fileOut.println("INCOMING PROCESS");
      System.out.println(list.toString()); 
      fileOut.println(list.toString());
      System.out.println("OUTGOING PROCESS");
      fileOut.println("OUTGOING PROCESS");
      System.out.println(queue.toString()); 
      fileOut.println(queue.toString()); 
      fileOut.close();
    }
    catch(IOException ioe)
    {
      ioe.printStackTrace();
    }


    try
    {
      // instantiate reader and grab the first line
      fileIn = new BufferedReader(new FileReader(FILE_NAME_IN));
      inputLine = fileIn.readLine(); 

      // While we still have events to process... 

      while(inputLine != null)
      {            
        String [] tokens = inputLine.split(" "); // read and tokenize line from text file 

        if(tokens[0].equals(IN)) 
        {                      

          try
          {
              fileOut = new PrintWriter(new FileWriter(FILE_NAME_OUT));
            System.out.println("\n---------");
            fileOut.println("\n---------");
            System.out.println(tokens[0] + " " + tokens[1]); 
            fileOut.println(tokens[0] + " " + tokens[1]); 
            System.out.println("---------");
            fileOut.println("---------");
            System.out.println("\n\n");
            fileOut.println("\n\n");

            // print status     
            System.out.println("INCOMING PROCESS");
            fileOut.println("INCOMING PROCESS");
            System.out.println(list.toString()); 
            fileOut.println(list.toString());
            System.out.println("OUTGOING PROCESS");
            fileOut.println("OUTGOING PROCESS");
            System.out.println(queue.toString()); 
            fileOut.println(queue.toString()); 
            fileOut.close();
          }
          catch(IOException ioe)
          {
            ioe.printStackTrace();
          }

        }
        else if(tokens[0].equals(OUT))
        {      
          try
          {
             fileOut = new PrintWriter(new FileWriter(FILE_NAME_OUT));
            System.out.println("\n---------");
            fileOut.println("\n---------");
            System.out.println(tokens[0] + " " + tokens[1]); 
            fileOut.println(tokens[0] + " " + tokens[1]); 
            System.out.println("---------");
            fileOut.println("---------");
            System.out.println("\n\n");
            fileOut.println("\n\n");

            // print status     
            System.out.println("INCOMING PROCESS");
            fileOut.println("INCOMING PROCESS");
            System.out.println(list.toString()); 
            fileOut.println(list.toString());
            System.out.println("OUTGOING PROCESS");
            fileOut.println("OUTGOING PROCESS");
            System.out.println(queue.toString()); 
            fileOut.println(queue.toString()); 
            fileOut.close();
          }
          catch(IOException ioe)
          {
            ioe.printStackTrace();
          }
        }
        else //CLOSE
        {
          try
          {
              fileOut = new PrintWriter(new FileWriter(FILE_NAME_OUT));
            System.out.println("\n\n---------");
            fileOut.println("\n\n---------");
            System.out.println(tokens[0]); 
            fileOut.println(tokens[0]); 
            System.out.println("---------");
            fileOut.println("---------");
            System.out.println("\n\n");
            fileOut.println("\n\n"); 

            // print status     
            System.out.println("INCOMING PROCESS");
            fileOut.println("INCOMING PROCESS");
            System.out.println(list.toString()); 
            fileOut.println(list.toString());
            System.out.println("OUTGOING PROCESS");
            fileOut.println("OUTGOING PROCESS");
            System.out.println(queue.toString()); 
            fileOut.println(queue.toString()); 
            fileOut.close();
          }
          catch(IOException ioe)
          {
            ioe.printStackTrace();
          }
        }

        inputLine = fileIn.readLine(); // grab the next line    
      }
      fileIn.close();
    }

    catch(IOException ioe)
    {
      System.out.println("Error: Could not read file.");
      ioe.printStackTrace(); 
    }
  }

你誤會了。 問題是每個if / else塊都會創建一個新文件,因此程序結束后,您將看到的唯一輸出是final命令的輸出,該命令位於final else塊中。

無需在每個if or else塊中打開和關閉文件。 首先將其打開,在需要時對其進行寫入,最后將其關閉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM