如何将文件中的数据读入数组?

时间:2015-02-08 18:34:27

标签: java arrays string file input

我的目标:将文件中的每个数据放入一个数组中。然后将该数组传递给main方法,这样我就可以调用我需要的任何数据,并在必要时附加它。

我现在的位置:我创建了文件及其内容并将它们放入数组中。当我尝试从main方法调用并打印数组时,我得到[Ljava.lang.String; @ 6dd4ea6c 这是什么?为什么它不允许我将我的阵列打印到控制台?

帮助?

我的代码:

   /**
Add in javadoc comments
*/


//import statements
    import java.io.*;
    import java.util.Scanner;
    import java.util.ArrayList;

public class Try { 

    public static void main(String[] args){
        fileSetUp();
        System.out.println(fileSetUp());
    }

    public static void createFile(){
        //create file holding inventory information
        try{
            PrintWriter outputFile = new PrintWriter("inventory.txt");
            outputFile.println("3000.0");
            outputFile.println("Lamps 15.3 400");
            outputFile.println("Chairs 19.95 250");
            outputFile.print("Desks 95.0 300");
            int i =0;
            outputFile.close();
        }
        catch(IOException e){
        System.out.println("File cannot be created."); //?????
        }
    }
    public static String[] fileSetUp(){
        //load the file information
        String[] data = new String[10];
        try{
            File file = new File("inventory.txt");
            Scanner inFile = new Scanner(file);
            for(int i=0; i<data.length; i++){
                data[i] = (inFile.next());
            }
            inFile.close();
        }
        catch(FileNotFoundException e){
            System.out.println("Cannot find file.");
        }
        return data;
    }
}

2 个答案:

答案 0 :(得分:0)

由于您的数据是面向行的,请采取“简单的方法”:

public static String[] getDataFromFile(final String filename)
    throws IOException
{
    final Path path = Paths.get(filename);
    final List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
    return lines.toArray(new String[lines.size()]);
}

或者只使用List代替数组。


至于:

  

当我尝试从main方法调用并打印数组时,我得到[Ljava.lang.String; @ 6dd4ea6c

这是数组的字符串表示形式。

如果需要元素,请使用数组的Arrays.toString()。或者,再次使用List

答案 1 :(得分:0)

Java中的数组是对象,但它们不会覆盖toString()方法。因此,当您尝试打印它们时,您将获得toString()的默认实现,这实际上是对象类型及其hashCode()的连接。要正确打印,您可以使用Arrays.toString(Object[])

public static void main(String[] args){
    String[] arr = fileSetUp();
    System.out.println(Arrays.toString(arr));
}