Java 当我开始对它进行操作时,有h行加载到内存中,似乎您有无法工作的代码。也许你可以从描述你想对CSV做什么开始。你可以使用一个嵌入式数据库,比如,把每一行都存储在那里。除了RAM数据库之外,您还可以使用文件数据库。重点是我正在尝试构建数据库功能。如果您有更好的
Java 当我开始对它进行操作时,有h行加载到内存中,似乎您有无法工作的代码。也许你可以从描述你想对CSV做什么开始。你可以使用一个嵌入式数据库,比如,把每一行都存储在那里。除了RAM数据库之外,您还可以使用文件数据库。重点是我正在尝试构建数据库功能。如果您有更好的,java,file,Java,File,当我开始对它进行操作时,有h行加载到内存中,似乎您有无法工作的代码。也许你可以从描述你想对CSV做什么开始。你可以使用一个嵌入式数据库,比如,把每一行都存储在那里。除了RAM数据库之外,您还可以使用文件数据库。重点是我正在尝试构建数据库功能。如果您有更好的arraylist替代方案,或者需要编写的类的指针可以像arraylist那样动态地增加大小,请告诉我,我会试试out@duskfall在这种情况下,你想研究数据库的实现,但我想说,这有点超出了这一范围。老实说,我以前没有使用过它们,因此,我一
当我开始对它进行操作时,有h行加载到内存中,似乎您有无法工作的代码。也许你可以从描述你想对CSV做什么开始。你可以使用一个嵌入式数据库,比如,把每一行都存储在那里。除了RAM数据库之外,您还可以使用文件数据库。重点是我正在尝试构建数据库功能。如果您有更好的arraylist替代方案,或者需要编写的类的指针可以像arraylist那样动态地增加大小,请告诉我,我会试试out@duskfall在这种情况下,你想研究数据库的实现,但我想说,这有点超出了这一范围。老实说,我以前没有使用过它们,因此,我一直在学习sql,同时将相关函数实现到我的工作表类中。因此,如果您想构建自己的数据库,首先必须使用seek()函数使用RandomAccessFile逐部分读取文件,其次需要使用自实现的b-树实现自己的搜索索引(否则)要知道文件中每行存储的位置。而且越来越多。。。
//Load method to load it from file
private static CSV loadCSV(String filename, boolean absolute)
{
String fullname = "";
if (!absolute)
{
fullname = baseDirectory + filename;
if (!Load.exists(fullname,false))
return null;
}
else if (absolute)
{
fullname = filename;
if (!Load.exists(fullname,false))
return null;
}
ArrayList<String> output = new ArrayList<String>();
AtomicInteger atomicInteger = new AtomicInteger(0);
try (Stream<String> stream = Files.lines(Paths.get(fullname)))
{
stream.forEach(t -> {
output.add(t);
atomicInteger.getAndIncrement();
if (atomicInteger.get() % 10000 == 0)
{
Log.log("Lines done " + output.size());
}
});
CSV c = new CSV(output);
return c;
}
catch (IOException e)
{
Log.log("Error reading file " + fullname,3,"FileIO");
e.printStackTrace();
}
return null;
}
//Process method inside CSV class
public CSV(List<String> output)
{
Log.log("Inside csv " + output.size());
ListIterator<String> iterator = output.listIterator();
while (iterator.hasNext())
{
ArrayList<String> d = new ArrayList<String>(Arrays.asList(iterator.next().split(splitter,-1)));
data.add(d);
iterator.remove();
}
}
spark.read.format("csv").option("header", "true").load("../Downloads/*.csv")
CSV csv = new CSV();
try (Stream<String> stream = Files.lines(Paths.get(fullname))) {
stream.forEach(t -> {
List<String> splittedString = splitFileRow(t);
csv.add(splittedString);
});