0

我对Java相当陌生,我正试图让它读取一个文件。

我有一个需要作为数组导入 Java 的数据文本文件。

数据文件的第一行是名称行。所有变量的名称都在第一行,数据聚集在列中。我只想将它导入 Java 并能够根据需要导出所有变量,就像它们是 MATLAB 中的向量一样。所以基本上我们获取数据并标记每个向量。我需要代码尽可能通用,因此它应该读取可变数量的列和行。我相信我能够使用一种非有效的方法来创建数组。现在我需要将数组分成多个数组,然后将它们转换为数字。但是我需要根据它们所属的向量对数字进行分组。

文本文件是从 Excel 电子表格创建的,因此它基本上具有用于不同测量的列,这将创建向量。另一个向量中的每一列包含行中的数据。

我搜索了很多试图实现的代码,但到了没有帮助的情况下我无法继续的地步。有人可以告诉我如何在任何意义上进行。甚至还可以改进阅读部分,因为我知道这不是在 Java 中这样做的最佳方式。这是我手头的东西:

package Testing;

import java.io.*;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;

public class Read1 {

    public static void main(String[] args) {
        try {
            FileReader fin = new FileReader("C:/jade/test/Winter_Full_clean.txt");
            BufferedReader in = new BufferedReader(fin);
            String str = "";
            int count = 0;
            String line;
            while ((line=in.readLine()) != null) {
                if (count==0) {
                    str = line;
                }
                else if (in.readLine()!=null) {
                    str = str + line;
                }
                count++;                
            }

            in.close();
            //System.out.printf(str);

            System.out.print(tokens);
       } catch (Exception e) {
          System.out.println("error crap" + e.getClass());
       }

    }


    //{

    //    Path yourFile = Paths.get("C:/jade/test/Winter_Full_clean.txt");
    //    Charset charset = Charset.forName("UTF-8");

    //    List<String> lines = null;
    //    try {
    //        lines = Files.readAllLines(yourFile, charset);
    //    } catch (IOException e) {
              // TODO Auto-generated catch block
    //        e.printStackTrace();
    //    }
    //    String[] arr = lines.toArray(new String[lines.size()]);
    //    System.out.println(arr);  
    //}



}
4

1 回答 1

0

我有一些功能性代码,可以将文本文件读入数组并在选项卡上拆分(它是一个 tsv 文件)。您应该能够将此作为读取初始数据的起点,然后根据数组中包含的数据,更改您的逻辑以适应:

  try (BufferedReader reader = new BufferedReader(new FileReader(path))) { //path is a String pointing to the file
                int lineNum = 0;
                String readLine;
                while ((readLine = reader.readLine()) != null) { //read until end of stream
                    if (lineNum == 0) { //Skip headers, i.e. start at line 2 of your excel sheet
                        lineNum++;
                        continue;
                    }
                    String[] nextLine = readLine.split("\t"); //Split on tab
                    for (int x = 0; x < nextLine.length; x++) { //do something with ALL the lines.
                        nextLine[x] = nextLine[x].replace("\'", "");
                        nextLine[x] = nextLine[x].replace("/'", "");
                        nextLine[x] = nextLine[x].replace("\"", " ");
                        nextLine[x] = nextLine[x].replace("\\xFFFD", "");
                    }
                //In this example, to access data for a certain column, 
                //call nextLine[1] for col 1, nextLine[2] for col 2 etc. 
                } //close your loop and go to the next line in your file
} //close your resources. 
于 2013-02-19T20:01:25.550 回答