Java 无法删除多个csv文件的标题
我想删除多个csv文件的标题。所以当我尝试这样做时,它显示出错误。但是我可以通过这种方式删除单个csv文件的头 我错过了什么,以实现我的目标,我可以删除多个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
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
和Linuxbash
采用类似于*.csv
的格式,并将其展开为所有匹配文件名的列表
另一方面,Java的
RandomAccessFile
需要一个特定的文件名,而不理解glob语法。您必须自己实施该行为。首先,您需要获取要更改的所有文件的列表。然后,您必须迭代该列表并执行所需的操作。也许使用PathMatcher可以实现类似glob*的语法,我明白您的意思。我已经在这一点上绊倒了,我必须以这种方式实施,但根据你的意见,这是不可能的。让我试试@YyYo@YyYo我的回答是故意含糊其辞的“获取所有文件的列表”。有很多很多不同的方法可以做到这一点。例如,另一种解决方案是接受命令行参数。这使得shell完成了将*.csv
扩展到文件名列表的所有脏活。然后您可以直接迭代这些名称。