Имам текстов файл, съдържащ думи, разделени с нов ред, като следния формат:
>hello
>world
>example
Как да създам ArrayList и да съхраня всяка дума като елемент?
Имам текстов файл, съдържащ думи, разделени с нов ред, като следния формат:
>hello
>world
>example
Как да създам ArrayList и да съхраня всяка дума като елемент?
Можете да използвате apache commons FileUtils.readLines()
.
Мисля, че List
, което връща, вече е ArrayList
, но можете да използвате конструктора ArrayList(Collection)
, за да сте сигурни, че ще получите такъв.
public static void main(String[] args) throws IOException{ // TODO Автоматично генериран метод мъниче
File file = new File("names.txt");
ArrayList<String> names = new ArrayList<String>();
Scanner in = new Scanner(file);
while (in.hasNextLine()){
names.add(in.nextLine());
}
Collections.sort(names);
for(int i=0; i<names.size(); ++i){
System.out.println(names.get(i));
}
Най-лесният начин е да използвате Guava:
File file = new File("foo.txt");
List<String> words = Files.readLines(file, Charsets.UTF_8);
(Не е гарантирано, че е ArrayList
, но се надявам това да няма значение.)
Четете файла ред по ред, създавате ArrayList за низове и добавяте line.substring(1) към дефинирания ArrayList, ако line.length>0.
Поставям файла в "C:\file.txt"; ако изпълните следното, то попълва ArrayList с думите и ги отпечатва.
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) throws Exception {
File file = new File("C:\\file.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
List<String> lines = new ArrayList<String>();
String line = br.readLine();
while(line != null) {
lines.add(line.replace(">", ""));
line = br.readLine();
}
for(String l : lines) {
System.out.println(l);
}
}
}
Забравих да актуализирам това: Ebohlman ме постави на правилния път.
Следващият беше i18. Когато извиква един от методите init, той настройва маршрути и принуждава app.router да бъде принуден в стека на манипулатора по-рано. Лошото ми е, че не разбрах, че част от кода взаимодейства с обекта на приложението и това го направи. Нямаше начин въпросът да получи по-добър отговор от това как той се справи с информацията, която дадох, така че отбелязвам отговора му като правилен.
Трябва да опитам да спя повече v.v
- person Jon Skeet; 01.04.2012Сигурен съм, че има много библиотеки, които правят това с 1 ред, но ето "чиста" реализация на Java:
Забележете, че сме "опаковали"/"декорирали" и т.н. стандартен FileReader (който чете само един байт наведнъж) с BufferedReader, което ни дава по-хубав метод readLine().
BufferedReader reader = null;
try {
reader = new BufferedReader(new InputStreamReader(
new FileInputStream("test.txt"),
Charset.forName("ISO-8859-1")));
List<String> lines = new ArrayList<String>();
String line;
while ((line = reader.readLine()) != null) {
lines.add(line);
}
System.out.println(lines);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
reader.close();
}
}
close
трябва да бъде в блок finally
. Бих предложил да оставите балончето IOException
да изскочи и до обаждащия се.
- person Jon Skeet; 01.04.2012