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);  
    });