我想编辑一个文本文件。 这是原始文件:
#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
请查看您是否可以在此方面帮助我。
答案 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");
用于不断增加的列表。