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
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
Nasıl bir metin dosyası Java kullanara...
Okuma basit bir metin dosyası...
Araçlarının String (Java)kaynak metin ...
Bayt sırası vida Java okuma işareti do...
Metin dosyası okuma Programlı olarak O...