2015-03-01 5 views
1

я чтение из файла, используя этот код:чтение из файла в Java

BufferedReader in = new BufferedReader(new FileReader("example.txt")); 


     String line; 
while((line = in.readLine()) != null) 
{ 
     String k = line; 
     System.out.println(k); 
} 
in.close(); 

Это работает прекрасно .. Однако мой текстовый файл содержит «1. Привет 2. Bye 3. SeeYa» .. Как могу ли я изменить свой код, чтобы «1. Hello» хранился в переменной .. «2. Bye» хранит в другой переменной .. и так далее Спасибо заранее!

+1

Вы не можете создавать переменные «на лету». Используйте массив. – CKing

+0

Как это сделать полностью зависит от вашего формата файла. Вам нужно указать, как форматируется текст в вашем файле. Является ли это подтверждением того, что всегда есть число? Всегда ли содержимое каждой переменной начинается с числа? Будут ли пустые строки в файле? – user3437460

+0

Текст '1. Hello 2. Bye 3. Seeya' в одной строке или каждой части находится в отдельной строке? – Pshemo

ответ

1

Если это одна строка, вы можете использовать следующее:

s.split("(?<=\\w)\\s")); 

split С принимает регулярное выражение, можно разделить в соответствии с пространством, что предшествовал характер.

Быстрый пример:

public static void main(String[] args) { 
    String s = "1. Hello 2. Bye 3. Seeya"; 
    System.out.println(Arrays.deepToString(s.split("(?<=\\w)\\s"))); 
} 

Выход:

[1. Hello, 2. Bye, 3. Seeya] 

Если вы имеете в виду несколько строк, вы можете просто петля на линии и добавить каждый из них на ArrayList.

Если вход может содержать один или несколько строк на каждый номер пуле, вы должны использовать \\s(?=\\d+[.]), который представляет собой пространство с последующим номером и точкой - благодаря @pshemo

+1

В случае, если данные могут быть '1. hello world 2. Bye bye 3. Seeya' Я бы предпочел '\\ s (? = \\ d + [.])', чтобы избежать расщепления между «hello world», например. – Pshemo

+0

@Pshemo хорошая вещь. – Maroun

+0

На основе [комментария к проекту] (http://stackoverflow.com/questions/28794515/reading-from-file-in-java#comment45863815_28794515) похоже, что все эти значения фактически находятся в отдельных строках, поэтому мы не нужно разбить их, но просто хранить их где-нибудь в списке. – Pshemo

0

Это, как вы можете это сделать ..

Поскольку данные находятся в отдельных строках, это очень прямолинейно. Вы можете просто использовать arrayList для получения данных.

ArrayList может «расти» и «сжиматься» по мере необходимости. В отличие от массивов с фиксированным размером.

public static void main(String[] args) throws FileNotFoundException 
{ 
     List<String> record = new ArrayList<String>();  //Use arraylist to store data 
     Scanner fScn = new Scanner(new File(“Data.txt”)); 
     String data; 

     while(fScn.hasNextLine()){ 
      data = fScn.nextLine(); 
      record.add(data); //Add line of text to the array list 
     } 
     fScn.close(); 
} 

Чтобы получить ваши записи из ArrayList, вы можете просто использовать для цикла или для-каждый цикл.

for(int x=0; x<record.size(); x++) 
    System.out.println(record.get(x)); 

//Get specific record with .get(x) where x is the element id starting from 0. 
//0 means the first element in your arraylist. 
Смежные вопросы