用Java读取文本文件并转换为多个向量

时间:2013-02-19 19:30:19

标签: java arrays vector

我对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);  
    //}



}

1 个答案:

答案 0 :(得分: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.