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

  • Epic Tutorials for iPhone, iPad and iOS

    Epic Tutoria

    18 EYLÜL 2011
  • HowtoDrawAndPaint

    HowtoDrawAnd

    24 EKİM 2010
  • Smith Micro Graphics

    Smith Micro

    15 Mayıs 2008