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

  • GALERNAYA20

    GALERNAYA20

    19 NİSAN 2011
  • Julian Smith

    Julian Smith

    31 EKİM 2006
  • SDSARG3

    SDSARG3

    14 Mart 2009