- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您好,我需要能够删除 CSV 文件中的一行。我的代码当前删除一行,直到下一行的第一个逗号。
我试过更改扫描仪定界符,但我无法让它按我需要的方式工作。
public void deleteRecord() {
String filePath = "marks.txt";
System.out.println("Enter the StudentID of the record you wish to delete: ");
Scanner in = new Scanner(System.in);
String removeTerm = in.nextLine();
String tempFile = "temp.txt";
File oldFile = new File(filePath);
File newFile = new File(tempFile);
try {
FileWriter fw = new FileWriter(tempFile,true);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter pw = new PrintWriter(bw);
Scanner scan = new Scanner(oldFile);
scan.useDelimiter("[,]");
while (scan.hasNext()) {
String ID = scan.next();
String Mark = scan.next();
if (!ID.equals(removeTerm)) {
pw.println(ID + "," + Mark);
}
}
scan.close();
pw.flush();
pw.close();
oldFile.delete();
File dump = new File(filePath);
newFile.renameTo(dump);
System.out.println("Record successfully deleted.");
} catch(IOException e) {
System.out.println("Error has occured.");
}
}
B00987,58
B00567,43
B00343,59
B00653,25
B00757,31
B00876,40
B00421,62
B00568,78
B00826,79
B00126,93
B00862,62
B00999,12
B00237,68
B00762,85
B00864,49
这是删除一行之前的文件。我会尝试删除第一行。
43
B00343,59
B00653
25
B00757,31
B00876
40
B00421,62
B00568
78
B00826,79
B00126
93
B00862,62
B00999
12
B00237,68
B00762
85
B00864,49
事情是这样的。
我需要它看起来像这样。
B00567,43
B00343,59
B00653,25
B00757,31
B00876,40
B00421,62
B00568,78
B00826,79
B00126,93
B00862,62
B00999,12
B00237,68
B00762,85
B00864,49
有人可以帮我解决这个问题吗?
最佳答案
尽管您扫描了 2 次以获得 ID 和标记,但您的输入文件每条记录仅包含 1 个逗号。所以第一次扫描会给你 ID 'B00987' 和标记 '58B00567'.
您可以使用扫描器并像这样添加多个分隔符:
s.useDelimiter(",|\\n");
这样扫描器会扫描到逗号和新行。
虽然我不经常使用扫描仪,但在您的情况下我什至更愿意使用 BufferedReader:
public void deleteRecord() {
String filePath = "marks.txt";
System.out.println("Enter the StudentID of the record you wish to delete: ");
Scanner in = new Scanner(System.in);
String removeTerm = in.nextLine();
String tempFile = "temp.txt";
File oldFile = new File(filePath);
File newFile = new File(tempFile);
try {
FileWriter fw = new FileWriter(tempFile,true);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter pw = new PrintWriter(bw);
BufferedReader reader = new BufferedReader(new FileReader(oldFile);
String line = "";
while((line = reader.readLine()) != null) {
if(!line.startsWith(removeTerm)) {
pw.println(line);
}
}
reader.close();
pw.flush();
pw.close();
oldFile.delete();
File dump = new File(filePath);
newFile.renameTo(dump);
System.out.println("Record successfully deleted.");
} catch(IOException e) {
System.out.println("Error has occured.");
}
}
同时使用自动关闭或至少适本地管理资源将是一个很好的优化。
关于java - 试图从 CSV 文件中删除一行,我的代码删除了一行和下一行的一半,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55535903/
我是 C++ 的新手,我在使用这段代码时遇到了问题: string output_date(int day, int month, int year){ string date; if
所以我这样做了 tar cvzf test.zip FP 为了创建目录 FP 的 zip 但是,它会列出 zip 中的目录 FP/ FP/php/ FP/php/pdf/ FP/php/docs/ F
我正在尝试在 Swift、Xcode 7.3(所以是 Swift 2.2)中创建一个通用类,但我似乎无法让它通过编译器: protocol Struct1Protocol { } struct Str
我的测试用例是这样的: class FooTest extends PHPUnit_Framework_TestCase { /** @covers MyClass::bar */ f
我正在尝试将brew install wine作为使electron-builder工作的一步。但是我所能得到的只是以下响应: ==> Installing dependencies for wine
我这样做: string[,] string1 = {{"one", "0"},{"Two", "5"},{"Three","1"}}; int b = 0; for(int i = 0; i <=
我正在尝试使用 SetWindowsHookEx 键盘 Hook Notepad.exe。 如您所见,工作线程正在将其 ASCII 代码(即 wParam)发送到指定的服务器。 UINT WINAPI
我正在尝试将 ListView 实现到我的 Fragment 中,但无论我尝试什么,我都会得到一个 NullPointerException。我检查对象是否为 null 并记录是否为 null,看起来
我尝试在一行中对齐两个 div。使用 float left 属性,一切顺利。但是当我在 div 中使用图像时,它开始产生问题。 所以这是我的示例代码:- Some headi
我目前正在使用此代码来获取图像的灰度图像表示并以 (512, 370, 1) 的格式表示它大批。 img_instance = cv2.imread(df.iloc[i][x_col]) / 255.
总结 我正在创建一个简单的应用程序,它允许用户选择一个包含顶级窗口的进程。用户首先键入 native DLL(而非托管 DLL)的路径。然后用户键入将在 Hook 过程中调用的方法的名称。该方法不得返
我是一名优秀的程序员,十分优秀!