2015-10-26 2 views
0

Мне нужно прочитать два текстовых файла, содержащих учетную информацию о соединении с базой данных и учетной записи электронной почты пользователя для некоторых java-приложений. Это будет сделано в нескольких разных проектах, поэтому я решил переместить его в отдельный класс.
я сделал создать этот класс для чтения учетные данные базы данныхэффективный способ чтения файлов учетных данных

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 

public class GetDbCredentials { 
    public static String USR; 
    public static String PSW; 
    public static String DB; 

    public GetDbCredentials(String filePath){ 
     readFile(filePath); 
    } 
    public void readFile(String file){ 
     try { 
      if(new File(file).exists()){ 
       BufferedReader fr=new BufferedReader(new FileReader(file)); 
       String input; 
       String[] credentials; 

       while ((input=fr.readLine())!=null){ 
        credentials=input.split("::"); 

        switch (credentials[0]){ 
         case "Username": 
          USR=credentials[1]; 
          break; 
         case "Password": 
          PSW=credentials[1]; 
          break; 
         case "DataBase": 
          DB=credentials[1]; 
          break;      
        } 
       } 
       fr.close();    
      }    
     } catch (IOException e) { 
      e.printStackTrace();   
     } 
    } 
    public String getPassword(){ 
     return PSW; 
    } 
    public String getUser(){ 
     return USR; 
    } 
    public String getDb(){ 
     return DB; 
    }  
} 

и это работает,

System.out.println("psw:\t"+new GetDbCredentials(args[0]).getPassword()); 
System.out.println("usr:\t"+new GetDbCredentials(args[0]).getUser()); 
System.out.println("DB:\t"+new GetDbCredentials(args[0]).getDb()); 

Теперь я должен был бы создать, более или менее, то же самое на другой класс, прочитайте электронную почту. Я просто думал, есть ли лучший способ справиться с ними, и, возможно, получить способ добавить два класса вместе.
Может быть, называя класс GetCredentials("email","emailfile.txt") используя строковый аргумент, чтобы понять, какой из этих двух мне нужно прочитать, так как информация по электронной почте файл содержит список получателей, я не могу использовать один и тот же методы,

Дополнительная информация: I Я не беспокоюсь о безопасности. Эти приложения будут работать в безопасной системе. Я просто хочу способ для пользователей, чтобы иметь возможность изменять информацию и не быть жестко закодированы и не быть видимым в Интернете (в соответствии с мерзавцем и так далее)

База информации файла

Пароль: : пароль
Имя пользователя :: Имя пользователя
DataBase :: URL: порт

информация Email файл

Пароль :: пароль
Имя пользователя :: имя пользователя
реципиентов :: [email protected] [email protected]

Спасибо всем, я пошел для этого решения, то

public class GetCredential { 
private String fileName; 

    public GetCredential(String file){ 
     this.fileName=file; 
    } 
    public String getProp(String title){ 

     Properties prop = new Properties(); 
     try { 
      prop.load(new FileInputStream(fileName)); 
      return prop.getProperty(title); 
     } catch (IOException e) { 
      e.printStackTrace(); 
        return null; 
     } 
    } 

и при вызове класса i передаем файл и имущество, которое я хочу

System.out.println("psw:\t"+new GetCredential(args[0]).getProp("Password")); 
System.out.println("usr:\t"+new GetCredential(args[0]).getProp("Username")); 
System.out.println("DB:\t"+new GetCredential(args[0]).getProp("DataBase")); 

System.out.println("psw:\t"+new GetCredential(args[1]).getProp("Password")); 
System.out.println("usr:\t"+new GetCredential(args[1]).getProp("Username")); 
System.out.println("DB:\t"+new GetCredential(args[1]).getProp("Recipients")); 
+0

Вы можете поделиться своими входными txt-файлами, которые хотите использовать? или по крайней мере их файловые структуры – codiacTushki

+0

Я просто думал об этом. Не имеет значения, я могу выбрать любой формат, который я хочу, и могу попросить пользователей следовать ему. –

+0

'java.lang.Properties' является стандартом для этого в java-языке. Если вы можете выбрать формат, используйте его. – fluminis

ответ

2

Почему вы не используете файл свойств? Очень легко читать и записывать файлы свойств и индивидуальные свойства.

Пример свойство файла:

database=database 
user=user 
password=password 
+0

Как вы используете файлы свойств?никогда не использовали их до –

+0

Вы говорите о java.lang.Properties, как упомянуто в fluminis? если да, может ли файл свойств быть написан в текстовом редакторе? я не собираюсь создавать свойства, пользователь вводит их вручную, и я просто прочитаю –

Смежные вопросы