基于处理中文件夹中的文件创建自我更新字符串



好吧,所以我在处理中弄乱了一个简单的fft可视化,并认为每次播放不止一首歌曲会很有趣。最后,我手动添加了 3 首歌曲,并在鼠标单击时使用预定义的字符串在歌曲之间随机更改。我想添加其余的电脑音乐,但每次我想在我的草图中添加新歌曲时,我都必须将其名称复制并粘贴到草图中的字符串中。似乎有很多不必要的工作

有没有办法让处理扫描文件夹,识别里面有多少文件,并将所有文件名复制到字符串中?我找到了一个名为sDrop的库,用于处理1.1,它允许您直接将文件拖放到草图中。但是,这在处理版本2 +中似乎不再存在。

这是我当前播放音乐的工作代码的简单版本:

import ddf.minim.spi.*;
import ddf.minim.signals.*;
import ddf.minim.*;
import ddf.minim.analysis.*;
import ddf.minim.ugens.*;
import ddf.minim.effects.*;
AudioPlayer player;
Minim minim;
String [] songs = {
  "song1.mp3",
  "song2.mp3",
  "song3.mp3",
};
int index;

void setup() {
  size(100, 100, P3D);
  index = int(random(songs.length));  
  minim = new Minim(this);
  player = minim.loadFile(songs[index]);
  player.play();
}
void draw() {
}

void mouseClicked() {
  index = int(random(songs.length)); 
  player.pause();
  player = minim.loadFile(songs[index]);
  player.play();
}

如果有人有建议或可以指导我学习一个好的教程,那就太好了。谢谢!

假设你在Java模式下使用它,那么你可以使用Java API:https://docs.oracle.com/javase/8/docs/api/

Java API 包含一个 File 类,该类包含多个用于读取目录内容的方法:https://docs.oracle.com/javase/8/docs/api/java/io/File.html

像这样:

ArrayList<String> songs = new ArrayList<String>();
File directory = new File("path/to/song/directory/");
for(File f : directory.listFiles()){
   if(!f.isDirectory()){
      songs.add(f.getAbsolutePath());
   }
}

谷歌搜索"目录的java列表文件"会给你带来大量的结果。

只是为了补充凯文的工人的答案:

  1. 尝试使用 File.separator 而不是"/"或"\"。它做同样的事情,但它根据你为你使用的操作系统找出正确的方法,所以你可以在其他电脑上移动你的草图,并且仍然可以让它工作。
  2. 查看 Daniel Shiffman 附带的处理示例>主题>文件 IO>目录列表

相关内容

  • 没有找到相关文章

最新更新