无法删除多个csv文件的标头

时间:2018-01-07 19:00:26

标签: java csv

我想删除多个csv文件的标头。因此,当我尝试这样做时,它显示错误。但是我可以通过这种方式删除单个csv文件的标题。

为了实现我的目标,我可以一次性删除多个csv文件的标题?我需要帮助。

注意:我已经给出了正确的文件名,目录名或卷标语法。

    package hadoop;


import java.io.IOException;
import java.io.RandomAccessFile;

class RemoveLine
{

public static void main(String...args) throws IOException 
    {  
    RandomAccessFile raf = new RandomAccessFile("F://sample1/*.csv", "rw");          
     //Initial write position                                             
    long writePosition = raf.getFilePointer();                            
    raf.readLine();                                                       
    // Shift the next lines upwards.                                      
    long readPosition = raf.getFilePointer();                             

    byte[] buff = new byte[1024];                                         
    int n;                                                                
    while (-1 != (n = raf.read(buff))) {                                  
        raf.seek(writePosition);                                          
        raf.write(buff, 0, n);                                            
        readPosition += n;                                                
        writePosition += n;                                               
        raf.seek(readPosition);                                           
    }                                                                     
    raf.setLength(writePosition);                                         
    raf.close();                                                          
    }   
}

输出:

Exception in thread "main" java.io.FileNotFoundException: F:\sample1\*.csv (The filename, directory name, or volume label syntax is incorrect)
    at java.io.RandomAccessFile.open0(Native Method)
    at java.io.RandomAccessFile.open(Unknown Source)
    at java.io.RandomAccessFile.<init>(Unknown Source)
    at java.io.RandomAccessFile.<init>(Unknown Source)
    at hadoop.RemoveLine.main(RemoveLine.java:12)

1 个答案:

答案 0 :(得分:1)

您可能正在考虑在命令行中使用的glob语法。 Windows cmd和Linux bash采用*.csv之类的内容,并将其扩展为所有匹配文件名的列表。

另一方面,Java的RandomAccessFile期望一个特定的文件名,理解glob语法。您必须自己实施该行为。首先,您需要获取要更改的所有文件的列表。然后,您必须遍历该列表并执行所需的操作。