0
我從文本文件中刪除了一些行,但工作正常,但空白行有問題。 那些仍然在.txt文件中,我不知道如何刪除或放置這些我搜索谷歌和這裏的解決方案,但我失敗了。 有沒有人知道我如何刪除空行? 我試了一下:Java刪除txt文件中的空白行
currentLine.trim().length() == 0); but still with out success
坦克
public static String COMMENT_LINE = "--.*";
public static String CREATE_BUFFERPOOL = "CREATE BUFFERPOOL.*";
public static String GRANT_USE = "GRANT USE.*";
public static String CONNECT_TO = "CONNECT TO.*";
public static Logger log = Logger.getLogger(Main.class);
//CHANGE PATH
public static String INPUT_FILE_PATH = "C://Users//dpa//Desktop//BW//bwcsvtest.txt";
public static String OUTPUT_FILE_PATH "C://Users//dpa//Desktop//BW//BWFormated.txt";
public static String TRANSFORM_FILE_PATH = "C://Users//dpa//Desktop//BW//BWtransformed.txt";
public static String CSV_FILE_PATH = "C://Users//dpa//Desktop//BW//result.csv";
public static void main(String[] args) throws IOException {
//log.debug("Formating File");
formatTxt(INPUT_FILE_PATH,OUTPUT_FILE_PATH);
log.debug("Formating File complete");
//CsvTransformer csvTransformer = new CsvTransformer(OUTPUT_FILE_PATH,TRANSFORM_FILE_PATH);
//csvTransformer.parseCSVInput();
//csvTransformer.writeDataToCsv(CSV_FILE_PATH);
}
public static void formatTxt(String inputFilePath, String outputFilePath) throws IOException {
File inputFile = new File(inputFilePath);
BufferedReader reader = new BufferedReader(new FileReader(inputFile));
File tempFile = new File(outputFilePath);
BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
String currentLine;
while ((currentLine = reader.readLine()) != null) {
currentLine = currentLine.trim();
if (currentLine.matches(COMMENT_LINE)) {
log.debug(currentLine);
log.debug("Commentline deleted");
continue;
}
if (currentLine.matches(CREATE_BUFFERPOOL)) {
log.debug(currentLine);
log.debug("CREATE BUFFERPOOL deleted");
continue;
}
if (currentLine.matches(GRANT_USE)) {
log.debug(currentLine);
log.debug("GRANT USE deleted");
continue;
}
if (currentLine.matches(CONNECT_TO)) {
log.debug(currentLine);
log.debug("CONNECT TO deleted");
continue;
}
writer.write(currentLine.replace("\t", ""));
writer.newLine();
}
reader.close();
writer.close();
}
}
首先,我會建議使用'如果/否則如果'在'formatTxt'方法中。由於它被編碼,它會每次都有效地重新測試相同的字符串,一旦它確定了它是哪一行,就不應該這樣做。其次,我沒有看到你想要刪除的線路。我希望你的'formatTxt'中有一個'if',用於測試這行是否爲空,而不是像其他塊一樣。 – CodeChimp
@CodeChimp「因爲它是編碼的」 - >在每個「if」塊的末尾有一個「continue」,所以不會,它不會重新測試 – fge
您的權利很早,而且我通常不會使用'繼續',所以它沒有註冊。不過,我仍然期望看到空字符串的測試。 – CodeChimp