2012-11-06 27 views
1

代碼工作正常,我只是好奇,如果可能的話,我怎麼能夠防止char 0D打印在我的文本文件的末尾。 謝謝。 這裏的代碼,如果有幫助。對不起,如果它是平庸的,仍然學習Java。當我使用PrintWriter寫入文件時,如何擺脫0D輸出?

  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; 
     } 
     } 
    } 
+0

0X0D是一個回車,順便 – DNA

+0

你能提供給您的使用產生這一結果的代碼? – Joe

+0

當然讓我編輯 – Ceelos

回答

2
printWriter.println("...") 

將使用與操作系統相關line.separator屬性來確定行分隔符序列:

這些方法使用平臺自有的行分隔符概念,而不是換行符。

它發生在您的計算機上\rOD)(從PrintWriter.println()的JavaDoc)(?):

行分隔符字符串由系統屬性line.separator定義,不一定是單個換行符('\n')。

只需使用普通的print()並附加任何你想要的字符:

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

...或覆蓋line.separator財產。