我的猜测是,我编写的代码不能与.CSV文件一起使用,但只能使用.txt。
我的代码的目的是从field1获取用户输入,并检查我的.CSV文件以查看文件中是否有用户输入的实例。如果有,则它将被来自field2的用户输入替换。
这适用于我的.txt文件,但不适用于我的.CSV文件。
这里是按下按钮(保存按钮)激活的代码:
try{
// Input the file location into Path variable 'p'
//Cannot write to CSV files
//Path p = Paths.get("C:\\Users\\myname\\Documents\\Stock Take Program\\tiger.csv");
Path p = Paths.get("C:\\Users\\myname\\Desktop\\test.txt");
//Read the whole file to a ArrayList
List<String> fileContent = new ArrayList<>(Files.readAllLines(p));
//Converting user input from editSerialField to a string
String strSerial = editSerialField.getText();
//Converting user input from editLocationField to a string
String strLocation = editLocationField.getText();
//This structure looks for a duplicate in the text file, if so, replaces it with the user input from editLocationField.
for (int i = 0; i < fileContent.size(); i++)
{
if (fileContent.get(i).equals(strSerial))
{
fileContent.set(i, strLocation);
}
break;
}
// write the new String with the replaced line OVER the same file
Files.write(p, fileContent);
}catch(IOException e)
{
e.printStackTrace();
}
我的问题是,如何更新我的代码以使用用户输入更新和替换.CSV文件的内容,就像它对我的.txt文件一样。
写入文本文件时,它只替换第一行,但在写入.CSV文件时,它不会替换任何内容。
无论如何,我应该以不同的方式编写代码以替换.CSV文件中的文本。
非常感谢任何帮助,谢谢。
答案 0 :(得分:0)
答案 1 :(得分:0)
可能应该是另一个问题,但是与仅在第一行上工作的更改相关的问题是由于break
被调用并且在第一轮回路中缩短了循环。把它放在if
区块内。
for (int i = 0; i < fileContent.size(); i++)
{
if (fileContent.get(i).equals(strSerial))
{
fileContent.set(i, strLocation);
break;
}
}
如果您希望它能够更新多行,请完全关闭。
答案 2 :(得分:0)
HTH,
public static void main(String[] args) throws FileNotFoundException {
String UserEntredValu="Karnataka";
String csvFile = "C:/Users/GOOGLE/Desktop/sample/temp.csv";
String line = "";
String cvsSplitBy = ",";
PrintWriter pw = null;
pw = new PrintWriter(new File(csvFile));
try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) {
while ((line = br.readLine()) != null) {
// use comma as separator
String[] country = line.split(cvsSplitBy);
for( int i = 0; i < country.length - 1; i++)
{
String element = country[i];
if(element.contains(UserEntredValu)){
String newEle=element.replace(element, "NEW INDIA");
pw.write(newEle);
System.out.println("done!");
pw.close();
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}