2010-01-12 2 views
5

Как бы я прочитал .txt-файл в Java и поместил каждую строку в массив, когда каждая строка содержит целые числа, строки и парные? И каждая строка имеет разные количества слов/чисел.Чтение текстового файла в java

Я полный noob на Java, поэтому извините, если этот вопрос немного глуп.

Благодаря

+1

Пожалуйста, будьте более конкретным в своем вопросе, что именно вы хотите делать с каждой строкой? –

+0

Этот вопрос должен помочь вам: http://stackoverflow.com/questions/224952 –

+0

@Fabian Steeg: Вопрос, с которым вы связались, не затрагивает работу с разными типами данных, как этот. – Powerlord

ответ

2

Ваш вопрос не очень понятно, так что я буду отвечать только на часть «читать»:

List<String> lines = new ArrayList<String>(); 
BufferedReader br = new BufferedReader(new FileReader("fileName")); 
String line = br.readLine(); 
while (line != null) 
{ 
    lines.add(line); 
    line = br.readLine(); 
} 
+2

вы забыли br.close() –

11

Try в Scanner класс, который никто не знает, но может сделать почти все с текстом.

Чтобы получить читатель для файла, используйте

File file = new File ("...path..."); 
String encoding = "...."; // Encoding of your file 
Reader reader = new BufferedReader (new InputStreamReader (
    new FileInputStream (file), encoding)); 

... use reader ... 

reader.close(); 

Вы действительно должны указать кодировку, иначе вы получите странные результаты, когда вы сталкиваетесь умляуты, Unicode и тому подобное.

+0

+1 для указания на сканер. Раньше я об этом не слышал. Интересный класс. – JasCav

+1

«Никто не знает о сканере». по крайней мере, для меня. Сканер также можно использовать в качестве: Scanner sc = new Scanner (новый файл («fileName»)); // любая идея, почему бы не использовать ее таким образом? – sttaq

+0

@sttaq: Потому что используется кодировка по умолчанию. Никогда не используйте кодировку по умолчанию при чтении данных. Всегда выясняйте, что такое ввод или укажите, что кодирует ваш код; в любом случае, пригвоздите его к чему-то конкретному. –

6

Самый простой вариант - просто использовать JAR Apache Commons IO и импортировать класс org.apache.commons.io.FileUtils. Есть много возможностей при использовании этого класса, но наиболее очевидным было бы следующее:

List<String> lines = FileUtils.readLines(new File("untitled.txt")); 

Это так просто.

«Не изобретайте велосипед».

1

Общие используется:

String line = null; 
    File file = new File("readme.txt"); 

    FileReader fr = null; 
    try 
    { 
     fr = new FileReader(file); 
    } 
    catch (FileNotFoundException e) 
    { 
     System.out.println("File doesn't exists"); 
     e.printStackTrace(); 
    } 
    BufferedReader br = new BufferedReader(fr); 

    try 
    { 
     while((line = br.readLine()) != null) 
    { 
     System.out.println(line); 
    } 
+1

Добро пожаловать в переполнение стека! Спасибо за ваш пост! Пожалуйста, не используйте подписи/метки в своих сообщениях. Ваш ящик пользователя считается вашей подписью, и вы можете использовать свой профиль для публикации любой информации о себе, как вам нравится. [Часто задаваемые вопросы о подписях/тегах] (http://stackoverflow.com/faq#signatures). Особенно, пожалуйста, не указывайте URL своего сайта, так как ваши сообщения могут быть помечены как спам. –

0

@ user248921 первую очередь, вы можете хранить все в массив строк, так что вы можете сделать массив строк и хранить строку в массив и использовать значение в коде, когда вы хотите , вы можете использовать приведенный ниже код для хранения гетерогенных (содержащих строки, int, boolean и т. д.) строк в массиве.

public class user { 
public static void main(String x[]) throws IOException{ 
    BufferedReader b=new BufferedReader(new FileReader("<path to file>")); 
    String[] user=new String[500]; 
    String line=""; 
    while ((line = b.readLine()) != null) { 
    user[i]=line; 
    System.out.println(user[1]); 
    i++; 
    } 

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