Обработка 2: случайно выбрать имя файла из массива?

Я пытаюсь заставить Processing случайным образом выбрать документ и распечатать его из терминала, но до сих пор я не уверен, как сделать первую часть: поместить имена файлов в массив и обработать случайным образом выбрать имена файлов из массива. Любая помощь будет оценена!

String[] document = new String[3];// = loadStrings("/Users/saraswatikalwani/Desktop/Hello.txt");
int n = 1;
document[0] = "/Users/saraswatikalwani/Desktop/Hello.txt";
document[1] = "/Users/saraswatikalwani/Desktop/How.txt";
document[2] = "/Users/saraswatikalwani/Desktop/Bye.txt";

//String document = [];
//String []document = new String[3];
//int n = int(random(0,1));

//var document = [];
//int n = //randomnumber

//String choosen = document[n];// = random(document);

void setup() {
  size(640, 360);

  //document[0] = "/Users/saraswatikalwani/Desktop/Hello.txt";
 // document[1] = "/Users/saraswatikalwani/Desktop/How.txt";
  //document[2] = "/Users/saraswatikalwani/Desktop/Bye.txt";

}

void draw() {
}

void mousePressed() {

  String[] params = {"lpr", "document[1]" };
  exec(params);

}

1 ответ

Если файлы находятся в каталоге ресурсов вашего эскиза, используя loadStrings() экономит много усилий. Однако вот более общий случай:

    import java.io.File;
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.FileNotFoundException;

    ArrayList<File> files;

    void setup(){
      files = new ArrayList<File>();
      File folder = new File("/Users/saraswatikalwani/Desktop")
      File[] fileList = folder.listFiles();
      for(File f : fileList){
        if(f.isFile()){
          if(f.getName().endsWith(".txt")) files.add(f);
        }
      }
      println(files);
    }

    void draw(){}

    void mousePressed(){
      int randIndex = (int) random(files.size());
      try {
        BufferedReader reader = new BufferedReader(new FileReader(files.get(randIndex)));
        String line = "Printing: "+files.get(randIndex).getName();
        while(line != null){
          println(line);
          line = reader.readLine();
        }
      } catch(IOException e) { //could be error calling readLine() or a filenotfound exception
        println("Error!");
      }
    }
Другие вопросы по тегам