我有一个带有textfiles(txt-Format)的大型数据集。 文本文件包含以下格式的数据:
Name, Number, Timestamp, Sensordata1, Sensordata2, ... , Sensordata40
Name, Number, Timestamp, Sensordata1, Sensordata2, ... , Sensordata40
Name, Number, Timestamp, Sensordata1, Sensordata2, ... , Sensordata40
现在我需要从每一行中删除数字和时间戳。
我的代码:
try{
// Open the file that is the first
// command line parameter
FileInputStream fstream = new FileInputStream("file.txt");
// Get the object of DataInputStream
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
//Read File Line By Line
while ((strLine = br.readLine()) != null) {
// Print the content on the console
System.out.println (strLine);
}
//Close the input stream
in.close();
}catch (Exception e){//Catch exception if any
System.err.println("Error: " + e.getMessage());
}
如何在Java中执行此操作?
答案 0 :(得分:1)
有几种方法可以实现这一点,具体取决于您希望花费多长时间来检测列等内容,最简单的方法是静态输入您要删除的数组中的数字1和2中的哪些列,这可以在你的例子中完成:
package stackquestions;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.logging.Level;
import java.util.logging.Logger;
public class StackQuestions {
public static void main(String[] args) {
try{
// Open the file that is the first
// command line parameter
FileInputStream fstream = new FileInputStream("file.txt");
// Get the object of DataInputStream
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
//Read File Line By Line
while ((strLine = br.readLine()) != null) {
String[] data=strLine.split(",");
for(int i=0;i<data.length;i++){
if(i!=1 && i!=2){
System.out.println (data[i]);
}
}
// Print the content on the console
}
//Close the input stream
in.close();
}catch (Exception e){//Catch exception if any
System.err.println("Error: " + e.getMessage());
}
}
}
另一种方法是根据正在读取的行是否是第一行来检测列,分割第一行(假设读取的第一行包含标题,然后在每次迭代时对索引执行检查以查看哪一列数据属于。
答案 1 :(得分:0)
如果相同的值始终显示在同一列中,那么我确定您可以将所有值添加到ArrayList
,循环删除不需要的值,然后只需把它写回文件。