SORU
7 Mayıs 2010, Cuma


Okuma metin dosyası Java

Bir metin dosyası alanı ayrılmış değerler içeren okumak istiyorum. Tamsayı değerlerdir. Nasıl okumak ve koydum dizi listesinde miyim?

İşte metin dosyasının içeriğini bir örnek:

1 62 4 55 5 6 77

[1, 62, 4, 55, 5, 6, 77] olarak bir arraylist içinde olmasını istiyorum. Java nasıl bunu yapabilirim?

CEVAP
7 Mayıs 2010, Cuma


Files#readAllLines() bir metnin tüm satırları List<String> Bir dosya içine almak için kullanabilirsiniz.

for (String line : Files.readAllLines(Paths.get("/path/to/file.txt"))) {
    // ...
}

Öğretici: Basic I/O > File I/O > Reading, Writing and Creating text files


String#split() parçaları düzenli ifade dayalı String bölme için kullanabilirsiniz.

for (String part : line.split("\\s ")) {
    // ...
}

Öğretici: Numbers and Strings > Strings > Manipulating Characters in a String


Integer#valueOf() Integer String dönüştürmek için kullanabilirsiniz.

Integer i = Integer.valueOf(part);

Öğretici: Numbers and Strings > Strings > Converting between Numbers and Strings


List#add() List bir öğe eklemek için kullanabilirsiniz.

numbers.add(i);

Öğretici: Interfaces > The List Interface


Yani, özetle (dosya boş satırları ne de sonunda/baştaki boşluk yok varsayarak).

List<Integer> numbers = new ArrayList<>();
for (String line : Files.readAllLines(Paths.get("/path/to/file.txt"))) {
    for (String part : line.split("\\s ")) {
        Integer i = Integer.valueOf(part);
        numbers.add(i);
    }
}

Eğer Java 8'de zaten iseniz, o zaman bile Files#lines() ile başlayan bu Stream API kullanabilirsiniz.

List<Integer> numbers = Files.lines(Paths.get("/path/to/test.txt"))
    .map(line -> line.split("\\s ")).flatMap(Arrays::stream)
    .map(Integer::valueOf)
    .collect(Collectors.toList());

Öğretici: Processing data with Java 8 streams

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • guau . .

    guau . .

    25 Ocak 2008
  • MADFINGER Games a.s.

    MADFINGER Ga

    21 NİSAN 2009
  • soyacincautv

    soyacincautv

    14 NİSAN 2010