我无法写入我的.CSV文件

时间:2016-11-09 06:03:32

标签: java file csv arraylist path

我的猜测是,我编写的代码不能与.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文件中的文本。

非常感谢任何帮助,谢谢。

3 个答案:

答案 0 :(得分:0)

我是个白痴。我的'.CSV'文件实际上名为tiger.csv作为文本文件。我现在保存了一个实际的CSV版本,它现在正在运行。

哈哈,谢谢你的帮助。

答案 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();
            }

        }