我正在尝试将数组存储到txt文件

时间:2019-12-18 13:44:57

标签: java

我想编辑一个文本文件。 这是原始文件:

#ifndef SPLINE_HPP
#define SPLINE_HPP

#include <Control/Control.hpp>

using Eigen::Vector2f;
using namespace std;

class Spline : Control
{
private:
struct RampFunction
{
    float x_0, val_0;
    float x_e, val_e;
};
float slowDownCoeff;
RampFunction timeRampFn;
RampFunction distanceRampFn;

public:
Spline(float slowDownCoeff, RampFunction timeRampFn, RampFunction distanceRampFn)
: slowDownCoeff(slowDownCoeff), timeRampFn(timeRampFn), distanceRampFn(distanceRampFn) {}

virtual void calculateAction(RobotState *state, Vector2f curPos, Vector2f refPos, Track targetTrack, float timeFromStart, float distanceToTarget);
};

#endif

我希望它像这样:

kopfor20 22 22

second line 3

last line 4

到目前为止,我所做的是在此之后将txt文件存储到数组中 我用“ new”替换了“ kopfor20”,但似乎无法将数组存储回txt文件。

这是我到目前为止所做的:

new 22 22 

second line 3

last line 4

请查看您是否可以在此方面帮助我。

1 个答案:

答案 0 :(得分:1)

由于Files类使所有工作变得多余,请使用:

public static void main(String[] args) throws Exception {

    // Assume the file is in the computer's local encoding,
    // and specify the path to the file:
    Charset charset = Charset.defaultCharset();
    Path path = Paths.get("test.txt");

    // Read the lines of the file:
    List<String> lines = Files.readAllLines(path, charset);

    // Change the first line, replacing non-whitespace at the line's start:
    String header = lines.get(0);
    header = header.replaceFirst("^\\S+", "new");
    lines.set(0, header);

    // Write the lines to the file:
    Files.write(path, lines, charset);
}

在原始代码上: 由于数组在Java中是固定长度的,因此最好将List<String> lines = new ArrayList<>(); list.add("foo");用于不断增加的列表。