问题描述
我在处理中保存文件时遇到了一个小问题。该程序会保存所有内容,但是当您关闭该程序并再次打开它时,文件将重置为零并从头开始保留记录。据我了解,这都是因为当您打开程序时会再次创建该文件。有谁知道如何打开一个已经创建的文件并写入它?
我将附加初始化部分:
void setup() {
size(330,450);// создаем рабочее окно размером 800х600 точек
surface.setTitle("Передача данных");//подпись вверху экрана
printArray(Serial.list());//выводим активные порты на экран или монитор
port = new Serial(this,Serial.list()[0],9600);//выбираем порт но ето не точно
//работа с файлами
cp5 = new ControlP5(this);
front = loadFont("TimesNewRomanPS-BoldItalicMT-20.vlw");//подгружаем шрифт
output0 = createWriter("POST1.txt");//создаем файл для логов с поста 1
output1 = createWriter("POST2.txt");// создаем файл длялогов с поста два
//создание списков
cp5 = new ControlP5(this);
p1 = cp5.addDropdownList("Post 1")//выпадающий список для поста 1
.setPosition(100,100);//положение (x,y)
p1.addItem(c11,c11);//пункты выпадающегосписка
p1.addItem(c12,c12);
p1.setColorBackground(color(60));
p1.setColorActive(color(255,128));
p2 = cp5.addDropdownList("Post 2")//те же шаги но для списка 2
.setPosition(100,150);
p2.addItem(c11,c11);
p2.addItem(c12,128));
//customize(p1);
//customize(p2);
}
处理下拉列表点击后写入文件的部分:
void controlEvent(ControlEvent theEvent){
String name = theEvent.getName();
float value = theEvent.getController().getValue();
int i = 0;
if(name.startsWith("Post 1")){
if(value==0.0){
//data = loadStrings("POST1.txt");
println("test code0");
selection.println("test code0" + " " + day()+"."+month()+"."+year()+" "+hour()+":"+minute()+":"+second());
//("POST1.txt");
output0.flush();
//output0.close();
//exit();
}
if(value==1.0){
println("test code1");
output0.println("test code1" + " " + day()+"."+month()+"."+year()+" "+hour()+":"+minute()+":"+second());
output0.flush();
output0.close();
exit();
}
}
}
解决方法
是的,调用与现有文件同名的 createWriter
将使用新的空白文件覆盖该文件,准备输出。因此,在创建输出编写器之前,您需要将文件(如果存在)读入您的草图中。
createWriter
的对应词是 createReader
。 reference 显示了如何读取文件和解析内容的示例。
在那个例子中,他们只是将内容绘制到屏幕上。这可能对您有用,或者您可能需要将内容存储在您的草图中(在数组或其他数据结构中),直到您准备好将数据写回文件(进行任何修改)。
根据您要保存和加载的具体内容,您可以查看 saveJSONObject 和 loadJSONObject。如果您使用更复杂的数据结构,它可以使加载和解析文件更容易。