微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在处理中保存到文件的问题

如何解决在处理中保存到文件的问题

我在处理中保存文件时遇到了一个小问题。该程序会保存所有内容,但是当您关闭该程序并再次打开它时,文件将重置为零并从头开始保留记录。据我了解,这都是因为当您打开程序时会再次创建该文件。有谁知道如何打开一个已经创建的文件并写入它?

我将附加初始化部分:

    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 的对应词是 createReaderreference 显示了如何读取文件和解析内容的示例。

在那个例子中,他们只是将内容绘制到屏幕上。这可能对您有用,或者您可能需要将内容存储在您的草图中(在数组或其他数据结构中),直到您准备好将数据写回文件(进行任何修改)。

根据您要保存和加载的具体内容,您可以查看 saveJSONObjectloadJSONObject。如果您使用更复杂的数据结构,它可以使加载和解析文件更容易。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。