2015-07-07 3 views
1

У меня есть текстовый файл с списком идентификаторов пользователей, похожим на этот;Создать строку в java из текстового файла

798574 
890859 
984058 
484849 
etc... 

Как я могу читать этот текстовый файл в Java, а затем создать одну строку, которая оборачивает каждый идентификатор в кавычках и отделяющий их через запятую, как это?

'798574','890859','984058','484849',..... 

Я пробовал это, но я чувствую, что он не эффективен вообще;

public class SixtyK { 

public String getNumbers() { 

    FileInputStream myfile = null; 
    BufferedReader reader = null; 

    try { 
     myfile = new FileInputStream("myfile.txt"); 
     reader = new BufferedReader(new InputStreamReader(myfile)); 
     String my_quote = "\\'"; 
     String my_sep = ","; 

     String line = reader.readLine(); 
     String new_line = ""; 

     new_line += my_quote; 
     new_line += line; 
     new_line += my_quote; 
     new_line += my_sep; 



     while(line != null){ 

      line = reader.readLine(); 
      new_line += my_quote; 
      new_line += line; 
      new_line += my_quote; 
      new_line += my_sep; 

     }   
     System.out.println(new_line); 
     return new_line; 
    } catch (FileNotFoundException ex) { 
     Logger.getLogger(SixtyK.class.getName()).log(Level.SEVERE, null, ex); 
     return "Error"; 
    } catch (IOException ex) { 
     Logger.getLogger(SixtyK.class.getName()).log(Level.SEVERE, null, ex); 
     return "Error"; 

    } finally { 
     try { 
      reader.close(); 
      myfile.close(); 
      return "finally caught"; 
     } catch (IOException ex) { 
      Logger.getLogger(SixtyK.class.getName()).log(Level.SEVERE, null, ex); 
      return "error in finally"; 
     } 
    } 
} 
+3

Эй приятель, Добро пожаловать к переполнению стека! Пожалуйста, покажите нам какой-то код, который вы пробовали. Мы не являемся службами написания кода, но мы можем помочь, если у вас возникнут проблемы при написании вашей программы. Счастливое кодирование! –

+0

Основы на io: https://docs.oracle.com/javase/tutorial/essential/io/ Надеюсь, вы сможете выяснить, как добавить цитаты и запятые по своему усмотрению :) – Orch

+0

Пожалуйста, используйте StringBuilder и добавьте чтобы уменьшить создаваемые строки и сэкономить массу памяти! –

ответ

1

Самый простой способ, если вы не хотите использовать FileReader или BufferedReader, чтобы сбросить текст в программе Java.

В зависимости от операционной системы, которую вы используете. Если вы используете Windows.

c:\>Java myProgram < file.txt 

Теперь вы можете сканировать его как сканирование для обычного ввода строки.

Scanner scn = new Scanner(System.in); 
String str = ""; 
while(scn.hasNext()){ 
    str += "\'" + scn.nextLine() + "\'" + ","; 
} 

Что касается других методов чтения, она широко обсуждается в SO: Reading a plain text file in Java

0

Рефакторинг кода:

public class SixtyK { 

public String getNumbers() { 
    FileInputStream myfile = null; 
    BufferedReader reader = null; 

    try { 
     myfile = new FileInputStream("myfile.txt"); 
     reader = new BufferedReader(new InputStreamReader(myfile)); 
     String my_quote = "\\'"; 
     String my_sep = ","; 

     String line = reader.readLine(); 
     String new_line = ""; 

     StringBuilder sb = new StringBuilder(); 

     sb.append(new_line) 
      .append(my_quote) 
      .append(line) 
      .append(my_quote) 
      .append(my_sep); 




     while(line != null){ 

      line = reader.readLine(); 

      sb.append(my_quote) 
      .append(line) 
      .append(my_quote) 
      .append(my_sep); 

     }   
     System.out.println(new_line); 
     return new_line; 
    } catch (FileNotFoundException ex) { 
     Logger.getLogger(SixtyK.class.getName()).log(Level.SEVERE, null, ex); 
     return "Error"; 
    } catch (IOException ex) { 
     Logger.getLogger(SixtyK.class.getName()).log(Level.SEVERE, null, ex); 
     return "Error"; 

    } finally { 
     try { 
      reader.close(); 
      myfile.close(); 
      return "finally caught"; 
     } catch (IOException ex) { 
      Logger.getLogger(SixtyK.class.getName()).log(Level.SEVERE, null, ex); 
      return "error in finally"; 
     } 
    } 
} 
Смежные вопросы