Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法删除多个csv文件的标题_Java_Csv - Fatal编程技术网

Java 无法删除多个csv文件的标题

Java 无法删除多个csv文件的标题,java,csv,Java,Csv,我想删除多个csv文件的标题。所以当我尝试这样做时,它显示出错误。但是我可以通过这种方式删除单个csv文件的头 我错过了什么,以实现我的目标,我可以删除多个csv文件的标题在一个镜头?我需要帮助 注意:我已经给出了正确的文件名、目录名或卷标语法 package hadoop; import java.io.IOException; import java.io.RandomAccessFile; class RemoveLine { public static void main

我想删除多个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)
线程“main”java.io.FileNotFoundException中的异常:F:\sample1\*.csv(文件名、目录名或卷标语法不正确) 位于java.io.RandomAccessFile.open0(本机方法) 位于java.io.RandomAccessFile.open(未知源代码) 位于java.io.RandomAccessFile。(未知源) 位于java.io.RandomAccessFile。(未知源) 位于hadoop.RemoveLine.main(RemoveLine.java:12)
您可能正在考虑在命令行中使用的glob语法。Windows
cmd
和Linux
bash
采用类似于
*.csv
的格式,并将其展开为所有匹配文件名的列表


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

也许使用PathMatcher可以实现类似glob*的语法,我明白您的意思。我已经在这一点上绊倒了,我必须以这种方式实施,但根据你的意见,这是不可能的。让我试试@YyYo@YyYo我的回答是故意含糊其辞的“获取所有文件的列表”。有很多很多不同的方法可以做到这一点。例如,另一种解决方案是接受命令行参数。这使得shell完成了将
*.csv
扩展到文件名列表的所有脏活。然后您可以直接迭代这些名称。