[英]Deleting first five lines of a text file
我正在嘗試刪除與數組中存儲的五個值匹配的文本文件的前5行。 到目前為止,這就是我所擁有的...
void write(String[] activecode) throws IOException
{
File productcodes = new File("productcodes.txt");
String charset = "UTF-8";
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(productcodes), charset));
File temp = File.createTempFile("productcodes", ".txt", productcodes.getParentFile());
PrintWriter writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(temp), charset));
int counter = 0;
for (String line; (line = reader.readLine()) != null && counter != activecode.length;)
{
line = line.replace(activecode[counter], "");
writer.println(line);
counter++;
}
reader.close();
writer.close();
productcodes.delete();
temp.renameTo(productcodes);
}
也供參考,這是文本文件的外觀...
BH390311ED6911-D8P8-BG7X
BH390311ED6912-GXKQ-BQ9V
BH390311ED6913-B6JF-55YG
BH390311ED6914-7B56-W37Y
BH390311ED6915-HPDW-V949
BH390311ED6916-3XX4-NDSN
BH390311ED6917-JH4M-PK6B
BH390311ED6918-WQKJ-5TKG
BH390311ED6919-TKS3-WHG3
BH390311ED6920-QTJV-9F43
BH390311ED6921-D45V-GHNG
BH390311ED6922-JH5F-4KXM
BH390311ED6923-6NQM-WSWF
BH390311ED6924-DMFD-BTN6
BH390311ED6925-7883-JG67
BH390311ED6926-3GRN-W7YT
BH390311ED6927-CBKB-47RW
該數組已保存為文本文件的前五個值。
關於為什么輸出的文本文件只剩下前三個值,您有任何想法嗎? 我是Java的新手(您可能會說:D)
編輯:數組activecode []的內容是:
BH390311ED6911-D8P8-BG7X
BH390311ED6912-GXKQ-BQ9V
BH390311ED6913-B6JF-55YG
BH390311ED6914-7B56-W37Y
BH390311ED6915-HPDW-V949
我想要的輸出將是:
BH390311ED6916-3XX4-NDSN
BH390311ED6917-JH4M-PK6B
BH390311ED6918-WQKJ-5TKG
BH390311ED6919-TKS3-WHG3
BH390311ED6920-QTJV-9F43
BH390311ED6921-D45V-GHNG
BH390311ED6922-JH5F-4KXM
BH390311ED6923-6NQM-WSWF
BH390311ED6924-DMFD-BTN6
BH390311ED6925-7883-JG67
BH390311ED6926-3GRN-W7YT
BH390311ED6927-CBKB-47RW
這是原始文件減去數組內容。
這是代碼中的循環:
for (String line; (line = reader.readLine()) != null && counter != activecode.length;)
{
line = line.replace(activecode[counter], "");
writer.println(line);
counter++;
}
它的作用是:對於counter
= 0、1、2、3和4,它從輸入文件中讀取一行。 line.replace(activecode[counter],"")
將在輸入行中從activecode
中查找代碼。 如果找到它,則將其從行中刪除。 如果整line
等於整個activecode[counter]
元素,則用空字符串""
代替該行。
但是隨后,您將該行寫入文件。 如果您打算從文件中刪除行,則不會這樣做。 現在line
(可能)是一個空字符串,並且writer.println(line)
將一個空字符串寫入輸出文件。 我不確定您的需求是什么; 它可能像
if (!line.equals(activecode[counter]))
writer.println(line);
除非它等於activecode[counter]
,否則它將寫出該行;如果它們相等,它將跳過該行並且不寫任何內容。 但是,我不清楚確切的要求是什么,例如,如果文件中的第三行等於activecode[0]
,那應該發生什么? 所以我不知道以上是否是正確的解決方案。 我認為您需要(至少為您自己)定義程序應該執行的操作。
最后,完成此循環后,您的程序不再讀取任何輸入。 也就是說,它僅讀取前五行。 然后關閉輸入和輸出文件。 如果您需要讀取其余的輸入文件並將其復制到輸出文件,則需要編寫另一個循環來執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.