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