How to open a txt file and read numbers in Java

后端 未结 6 1030
佛祖请我去吃肉
佛祖请我去吃肉 2020-11-27 18:17

How can I open a .txt file and read numbers separated by enters or spaces into an array list?

相关标签:
6条回答
  • 2020-11-27 18:46
    File file = new File("file.txt");   
    Scanner scanner = new Scanner(file);
    List<Integer> integers = new ArrayList<>();
    while (scanner.hasNext()) {
        if (scanner.hasNextInt()) {
            integers.add(scanner.nextInt());
        } 
        else {
            scanner.next();
        }
    }
    System.out.println(integers);
    
    0 讨论(0)
  • 2020-11-27 18:47

    Read file, parse each line into an integer and store into a list:

    List<Integer> list = new ArrayList<Integer>();
    File file = new File("file.txt");
    BufferedReader reader = null;
    
    try {
        reader = new BufferedReader(new FileReader(file));
        String text = null;
    
        while ((text = reader.readLine()) != null) {
            list.add(Integer.parseInt(text));
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (reader != null) {
                reader.close();
            }
        } catch (IOException e) {
        }
    }
    
    //print out the list
    System.out.println(list);
    
    0 讨论(0)
  • 2020-11-27 18:47

    A much shorter alternative is below:

    Path filePath = Paths.get("file.txt");
    Scanner scanner = new Scanner(filePath);
    List<Integer> integers = new ArrayList<>();
    while (scanner.hasNext()) {
        if (scanner.hasNextInt()) {
            integers.add(scanner.nextInt());
        } else {
            scanner.next();
        }
    }
    

    A Scanner breaks its input into tokens using a delimiter pattern, which by default matches whitespace. Although default delimiter is whitespace, it successfully found all integers separated by new line character.

    0 讨论(0)
  • 2020-11-27 18:54
    import java.io.*;  
    public class DataStreamExample {  
         public static void main(String args[]){    
              try{    
                FileWriter  fin=new FileWriter("testout.txt");    
                BufferedWriter d = new BufferedWriter(fin);
                int a[] = new int[3];
                a[0]=1;
                a[1]=22;
                a[2]=3;
                String s="";
                for(int i=0;i<3;i++)
                {
                    s=Integer.toString(a[i]);
                    d.write(s);
                    d.newLine();
                }
    
                System.out.println("Success");
                d.close();
                fin.close();    
    
    
    
                FileReader in=new FileReader("testout.txt");
                BufferedReader br=new BufferedReader(in);
                String i="";
                int sum=0;
                while ((i=br.readLine())!= null)
                {
                    sum += Integer.parseInt(i);
                }
                System.out.println(sum);
              }catch(Exception e){System.out.println(e);}    
             }    
            }  
    

    OUTPUT:: Success 26

    Also, I used array to make it simple.... you can directly take integer input and convert it into string and send it to file. input-convert-Write-Process... its that simple.

    0 讨论(0)
  • 2020-11-27 18:58

    Good news in Java 8 we can do it in one line:

    List<Integer> ints = Files.lines(Paths.get(fileName))
                              .map(Integer::parseInt)
                              .collect(Collectors.toList());
    
    0 讨论(0)
  • 2020-11-27 19:07
       try{
    
        BufferedReader br = new BufferedReader(new FileReader("textfile.txt"));
        String strLine;
        //Read File Line By Line
        while ((strLine = br.readLine()) != null)   {
          // Print the content on the console
          System.out.println (strLine);
        }
        //Close the input stream
        in.close();
        }catch (Exception e){//Catch exception if any
          System.err.println("Error: " + e.getMessage());
        }finally{
         in.close();
        }
    

    This will read line by line,

    If your no. are saperated by newline char. then in place of

     System.out.println (strLine);
    

    You can have

    try{
    int i = Integer.parseInt(strLine);
    }catch(NumberFormatException npe){
    //do something
    }  
    

    If it is separated by spaces then

    try{
        String noInStringArr[] = strLine.split(" ");
    //then you can parse it to Int as above
        }catch(NumberFormatException npe){
        //do something
        }  
    
    0 讨论(0)
提交回复
热议问题