如何使用JavaNIOAPI流式传输CSV文件?

如何使用JavaNIOAPI流式传输CSV文件?,java,nio,Java,Nio,我正在尝试使用JavaNIO流式传输一个大的CSV文件,我能够从CSV文件中读取数据。请提供我们如何流式处理CSV文件的示例。我们需要在下面的代码中附加/更改什么代码 import java.io.IOException; import java.io.RandomAccessFile; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; public class ReadFileWithFixedSizeBuf

我正在尝试使用JavaNIO流式传输一个大的CSV文件,我能够从CSV文件中读取数据。请提供我们如何流式处理CSV文件的示例。我们需要在下面的代码中附加/更改什么代码

import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
 
public class ReadFileWithFixedSizeBuffer 
{
    public static void main(String[] args) throws IOException 
    {
        RandomAccessFile aFile = new RandomAccessFile("airQuality.csv", "r");
 
        FileChannel inChannel = aFile.getChannel();
 
        ByteBuffer buffer = ByteBuffer.allocate(1024);
        while(inChannel.read(buffer) > 0)
        {
            buffer.flip();
            for (int i = 0; i < buffer.limit(); i++)
            {
                System.out.print((char) buffer.get());
            }
            buffer.clear(); // do something with the data and clear/compact it.
        }
 
        inChannel.close();
        aFile.close();
    }
}
请参阅下面的代码

import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
 
public class ReadFileWithFixedSizeBuffer 
{
    public static void main(String[] args) throws IOException 
    {
        RandomAccessFile aFile = new RandomAccessFile("airQuality.csv", "r");
 
        FileChannel inChannel = aFile.getChannel();
 
        ByteBuffer buffer = ByteBuffer.allocate(1024);
        while(inChannel.read(buffer) > 0)
        {
            buffer.flip();
            for (int i = 0; i < buffer.limit(); i++)
            {
                System.out.print((char) buffer.get());
            }
            buffer.clear(); // do something with the data and clear/compact it.
        }
 
        inChannel.close();
        aFile.close();
    }
}
import java.io.IOException;
导入java.io.RandomAccessFile;
导入java.nio.ByteBuffer;
导入java.nio.channels.FileChannel;
公共类ReadFileWithFixedSizeBuffer
{
公共静态void main(字符串[]args)引发IOException
{
RandomAccessFile aFile=新的RandomAccessFile(“airQuality.csv”、“r”);
FileChannel inChannel=aFile.getChannel();
ByteBuffer缓冲区=ByteBuffer.allocate(1024);
而(在通道读取(缓冲区)>0)
{
flip();
对于(int i=0;i
任何帮助都将不胜感激。
提前谢谢

在像这样的逐行格式的文件上使用没有多大意义

调用NIO将简化您的逻辑,并整洁地清理您的文件处理:

Path file = Path.of("airQuality.csv");

try(Stream<String> lines = Files.lines(file))
{
    lines.forEach(line -> {
        // Do something with each line here instead of:
        System.out.println(line);
    });
}
Path file=Path.of(“airQuality.csv”);
try(流行=文件。行(文件))
{
行。forEach(行->{
//在此处对每一行执行一些操作,而不是:
系统输出打印项次(行);
});
}

Hello@DuncG,我有一个疑问。我们可以使用上面的代码实现CSV文件流吗?上面的代码只是一个更清晰的起点,与您的代码示例相同-因此不是代码编写服务。如果您想解析CSV以将数据提取到另一个数据结构,请查看ApacheSCSV之类的库。是的,谢谢,我知道了,但我的要求不同。首先,我必须创建一个端点,该端点可以从一个位置流式传输CSV文件,并在spring boot应用程序中使用JavaNIO将响应发送回。直到我的探索,我还没有找到任何与此相关的示例和示例代码。所以,第一件事是可以使用java NIO流式传输CSV文件吗?如果可以,那么我们如何实现它??