je fais tous face au problème de pas d’idée de stocker le contenu dans un fichier texte dans le tableau . La situation est la suivante: contenu du fichier texte:
abc1
xyz2
rxy3
Je souhaite les stocker dans un tableau ligne par ligne, est-ce possible? Ce que j'attends est comme ça:
arr[0] = abc1
arr[1] = xyz2
arr[2] = rxy3
J'ai essayé quelque chose comme ça, mais semble ne pas fonctionner pour moi. Si quelqu'un peut m'aider, merci beaucoup.
Le code est:
BufferedReader in = new BufferedReader(new FileReader("path/of/text"));
String str;
while((str = in.readLine()) != null){
String[] arr = str.split(" ");
for(int i=0 ; i<str.length() ; i++){
arr[i] = in.readLine();
}
}
Je recommanderais d'utiliser ArrayList
, qui gère le dimensionnement dynamique, alors qu'un tableau nécessitera une taille définie à l'avance, que vous ignorez peut-être. Vous pouvez toujours retourner la liste dans un tableau.
BufferedReader in = new BufferedReader(new FileReader("path/of/text"));
String str;
List<String> list = new ArrayList<String>();
while((str = in.readLine()) != null){
list.add(str);
}
String[] stringArr = list.toArray(new String[0]);
La solution la plus simple:
List<String> list = Files.readAllLines(Paths.get("path/of/text"), StandardCharsets.UTF_8);
String[] a = list.toArray(new String[list.size()]);
Notez que Java.nio.file.Files est depuis 1.7
Cela devrait fonctionner car il utilise Liste car vous ne savez pas combien de lignes seront présentes dans le fichier et elles peuvent aussi changer plus tard.
BufferedReader in = new BufferedReader(new FileReader("path/of/text"));
String str=null;
ArrayList<String> lines = new ArrayList<String>();
while((str = in.readLine()) != null){
lines.add(str);
}
String[] linesArray = lines.toArray(new String[lines.size()]);
Files.lines(new File("/home/abdennour/path/to/file.txt").toPath()).collect(Collectors.toList());
Vous devez faire quelque chose comme ceci pour votre cas: -
int i = 0;
while((str = in.readLine()) != null){
arr[i] = str;
i++;
}
Notez cependant que la variable arr
doit être déclarée correctement, en fonction du nombre d'entrées de votre fichier.
Suggestion: - Utilisez plutôt une List
(Regardez @ Kevin Bowersox post pour cela)
Il suffit d’utiliser Apache Commons IO
List<String> lines = IOUtils.readLines(new FileInputStream("path/of/text"));
Essaye ça:
String[] arr = new String[3];// if size is fixed otherwise use ArrayList.
int i=0;
while((str = in.readLine()) != null)
arr[i++] = str;
System.out.println(Arrays.toString(arr));
Lorsque vous faites str = in.readLine()) != null
, vous lisez une ligne dans la variable str
et si elle n’est pas nulle, exécutez le bloc while
. Vous n'avez pas besoin de lire la ligne une fois de plus dans arr[i] = in.readLine();
. Utilisez également des listes au lieu de tableaux lorsque vous ne connaissez pas la taille exacte du fichier d'entrée (nombre de lignes).
BufferedReader in = new BufferedReader(new FileReader("path/of/text"));
String str;
List<String> output = new LinkedList<String>();
while((str = in.readLine()) != null){
output.add(str);
}
String[] arr = output.toArray(new String[output.size()]);
Vous pouvez utiliser ce code complet pour votre problème. Pour plus de détails, vous pouvez le vérifier sur appucoder.com
class FileDemoTwo{
public static void main(String args[])throws Exception{
FileDemoTwo ob = new FileDemoTwo();
BufferedReader in = new BufferedReader(new FileReader("read.txt"));
String str;
List<String> list = new ArrayList<String>();
while((str =in.readLine()) != null ){
list.add(str);
}
String[] stringArr = list.toArray(new String[0]);
System.out.println(" "+Arrays.toString(stringArr));
}
}
Suggérez d’utiliser Apache IOUtils.readLines pour cela. Voir le lien ci-dessous.
http://commons.Apache.org/proper/commons-io/apidocs/org/Apache/commons/io/IOUtils.html