从Java工作目录中读取txt文件(不工作)

时间:2015-10-10 04:06:07

标签: java arrays io int java.util.scanner

我已经阅读了几篇关于如何将txt文件读入int []的文章,并且通过多种方式,我还没有成功。

import java.io.*;
import java.util.Scanner;

public class SequenceSquare
{
private int[] arr;

public SequenceSquare() 
{
    int count = 0;
    File fileName = new File("Sequence.txt"); // fileName for opening
    try
    {
        Scanner input = new Scanner(fileName);
        while (input.hasNextLine()) //while there is a line to read
        {
            if(input.hasNextInt()) //if this line has an int
            {
                count++; // increment count 
                input.nextInt(); //move to next integer
            }
        }

        arr = new int[count]; // create arr with sufficient size
        input.close(); // close scanning file

        Scanner newInput = new Scanner(fileName);

        for(int i = 0; i < arr.length; i++)
        {
            while (newInput.hasNextLine()) // same as above
            {
                if(newInput.hasNextInt()) // same as above
                {
                   arr[i] = newInput.nextInt(); //store int scanned into arr 
                }
            }
        }
        newInput.close();
    }
    catch(FileNotFoundException f)
    {
        f.printStackTrace();
    }
}
"Sequence.txt"
1
2
5
9
29
30
7
9
111
59
106
130
-2

所以基本上在调用默认构造函数时,假设打开&#34; Sequence.txt&#34;并读取格式化为int数组的整数。在txt文件中,数字的格式为每行一个整数,如4 \ n 5 \ n等。 但是,当我遍历数组&#34; arr&#34;它好像没有内容。我已经实现了许多测试函数来测试是否已经填充(未列出)但是arr没有返回任何内容。请帮忙。请告诉我发生了什么。我宁愿知道对正在发生的事情的解释而不是答案,但两者都会这样做。另外我知道你可以使用arraylists和list来执行相同的功能,但我希望它是一个数组。如果你想看到我可以发布的整个课程,但其他代码是不必要的,因为它可以工作

1 个答案:

答案 0 :(得分:0)

这就是我们如何使用数组来做到这一点。如果它是列表,它会更简单。

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class FileReading {
    public static final String FILE_PATH = "D:\\testing.txt";
    public static void main(String[] args) {        

        try {
            int[] newArr = readFile(FILE_PATH);
            //testing the new array
            for(int i=0;i<newArr.length;i++){
                System.out.println(newArr[i]);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    public static int[] readFile(String pathToFile) throws NumberFormatException, IOException{
        String sCurrentLine;
        int[] arr = new int[countLines(pathToFile)];
        BufferedReader br = new BufferedReader(new FileReader(pathToFile));
        int i=0;
        while ((sCurrentLine = br.readLine()) != null) {                
            arr[i] = Integer.parseInt(sCurrentLine);
            i++;
        }
        br.close();
        return arr;
    }

    public static int countLines(String pathToFile) throws NumberFormatException, IOException{
        BufferedReader br = new BufferedReader(new FileReader(pathToFile));
        int count =0;
        while ((br.readLine()) != null) {
            count++;
        }
        br.close();
        return count;
    }
}