我想删除多个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)
答案 0 :(得分:1)
您可能正在考虑在命令行中使用的glob语法。 Windows cmd
和Linux bash
采用*.csv
之类的内容,并将其扩展为所有匹配文件名的列表。
另一方面,Java的RandomAccessFile
期望一个特定的文件名,不理解glob语法。您必须自己实施该行为。首先,您需要获取要更改的所有文件的列表。然后,您必须遍历该列表并执行所需的操作。