在Java中读取文件并从文本文件更新一些数据?

时间:2019-03-21 16:36:55

标签: java

我在使用Java自动化框架的黄瓜中工作,一个目录有一个我编码为的文本文件(每次都重命名),我想提取该新的重命名文件,并在打开该文件后要更新一些特定数据并保存以备后用。

任何人都可以帮助我如何打开文本文件,如何更新并再次关闭它, 要更新特定数据(请参见下面的示例)(第二个raw中有“名称”列和“值”,要每次使用任何随机字符串更新“名称”数据) 文本文件数据:

名称| DOB |性别| Komal | 1992年5月6日|女

2 个答案:

答案 0 :(得分:1)

您不能使用Java更新现有文件。

  1. 您必须读取,修改和写入新文件。
  2. 删除旧文件
  3. 使用旧文件名重命名新文件。

答案 1 :(得分:0)

下面的程序将用所需的字符串替换第4列数据(Komal),我们需要传递包含1个txt文件的目录名称。

public class MyApplication {

    public static void main(String[] args) throws Exception {
        getTxtFileWithInADirectory("D:\\Learning\\newyork");
    }

    static void getTxtFileWithInADirectory(String directoryPath) {
        String fileExtension;
        File folder = new File(directoryPath);
        File[] listOfFiles = folder.listFiles();
        for (int i = 0; i < listOfFiles.length; i++) {
            if (listOfFiles[i].isFile()) {
                fileExtension = listOfFiles[i].getName().substring(listOfFiles[i].getName().lastIndexOf("."), listOfFiles[i].getName().length());   
                if(fileExtension.contains(".txt")) {
                    updateTXTFile(listOfFiles[i].getAbsolutePath(),"Poonam");
                }
            } else {
                System.out.println(".txt file not found");
            }
        }
    }

    static void updateTXTFile(String fileToBeModified, String newText) {
        String oldContent = "";
        BufferedReader reader = null;
        FileWriter writer = null;
        try
        {
            reader = new BufferedReader(new FileReader(fileToBeModified));

            //Reading all the lines of input text file into oldContent

            String line = reader.readLine();

            while (line != null) 
            {
                oldContent = oldContent + line + System.lineSeparator();

                line = reader.readLine();
            }

            String[] items = oldContent.split("\\|");
            String newContent = oldContent.replace(items[3], " "+newText+" ");
            writer = new FileWriter(fileToBeModified);
            writer.write(newContent);
        }catch (Exception e)
        {
            e.printStackTrace();
        }
        finally
        {
            try
            {
                //Closing the resources
                reader.close();
                writer.close();
            } 
            catch (Exception e) 
            {
                e.printStackTrace();
            }
        }
    }
}