web-dev-qa-db-fra.com

Stocker le contenu du fichier texte ligne par ligne dans un tableau

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();
            }
        }
11
salemkhoo

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]);
21
Kevin Bowersox

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

10
Evgeniy Dorofeev

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()]);
3
IndoKnight

Java 8:

Files.lines(new File("/home/abdennour/path/to/file.txt").toPath()).collect(Collectors.toList());
2
Abdennour TOUMI

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)

2
SudoRahul

Il suffit d’utiliser Apache Commons IO

List<String> lines = IOUtils.readLines(new FileInputStream("path/of/text"));
2
Zutty

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));
1
Achintya Jha

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()]);
1
Mariusz Jamro

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)); 
    }

}
1
sag mag

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

0
yogiam