当我使用PrintWriter写入文件时,如何摆脱0D输出?

时间:2012-11-06 20:31:51

标签: java

代码工作正常,我只是好奇如何尽可能阻止char 0D在我的文本文件末尾打印。 谢谢。 这是代码,如果它有帮助。对不起,如果它是平庸的,还在学习java。

           import java.util.*;  
   import java.io.*;

   public class Driver{
      String inputFile, input;
      Scanner kb = new Scanner(System.in);
      PrintWriter output = new PrintWriter(System.out);
      File file; 
      BST tree = new BST();
      Trie trie = new Trie();


      public static void main(String[] args){
         Driver driver = new Driver();
         boolean done = false;  

         driver.initialDataFromFile();
         while (!done){      
            done = driver.menu(true);   
         }
      }

      public void initialDataFromFile() {
         System.out.println("Welcome to Project0");
         System.out.println("What is the name of the input file?");
         System.out.print("> ");
         inputFile = kb.nextLine(); 
         File file = new File(inputFile);

         try{
            Scanner scanner = new Scanner(file);

            while(scanner.hasNextLine()){
               String in = scanner.nextLine();
               tree.insert(in);
               trie.insert(in);
            }
            System.out.println("Finished reading the file");

         }
            catch(FileNotFoundException e){
               System.out.println("File does not exist");
               System.exit(1);
            }
      }

      public boolean menu(boolean done){      
         System.out.print("Please enter your command\r>");
         input = kb.next();
         File file = new File(inputFile);
         PrintWriter output = null;// = new PrintWriter(inputFile);

         if(input.toLowerCase().equals("quit")){
            System.out.println("Quitting");
            System.out.println("Writing updated info to " + inputFile);     
            try{
               output =  new PrintWriter(file);
             //   String str = "";
//                str += tree.toString();
               output.println(tree.toString());  

               output.close();

            }
               catch(IOException e){
                  System.out.print("error");}
            System.out.println("Goodbye");    
            return true;       
         }

         else if(input.toLowerCase().equals("insert")){
            input = kb.next();
            tree.insert(input);
            trie.insert(input);
            System.out.println();
            return false;
         }
         else if(input.toLowerCase().equals("delete")){
            input = kb.next();
            tree.delete(input);
            trie.delete(input);
            System.out.println();  
            return false;
         }
         else if(input.toLowerCase().equals("find")){
            input = kb.next();
            tree.find(input);
            trie.find(input);
            System.out.println();
            return false;
         }
         else if(input.toLowerCase().equals("print")){
            tree.print();
            trie.print();
            System.out.println();
            return false;
         }
         else{
            System.out.println("Not A Valid Choice");
            System.out.println();
            return false;
         }
      }
   }

2 个答案:

答案 0 :(得分:2)

printWriter.println("...")

将使用OS相关line.separator属性来确定行分隔符序列:

  

这些方法使用平台自己的行分隔符概念而不是换行符。

恰好是您计算机上的\r(?)(OD)(来自PrintWriter.println()的JavaDoc):

  

行分隔符字符串由系统属性line.separator定义,不一定是单个换行符('\n')。

只需使用普通print()并附上您想要的任何字符:

printWriter.print("...\n")

...或覆盖line.separator属性。

答案 1 :(得分:1)

您可以使用line.separator系统属性,例如,提供与操作系统无关的输出。

http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html