如何从原始文件夹中读取某些文件?
How to read certain files from raw folder?
我创建了一个简单的 activity 用于播放存储在原始文件夹中的音乐列表,但我想创建另一个活动,例如,MainActivity
- 2008 年的歌曲,其他 Activity 1 - 2009 年的歌曲,其他 Activity 2 - 2010 年的歌曲,等等 那么我如何只从原始文件夹中读取某些文件或者是否可以创建子目录或从其他新文件夹中读取?
以下是我到目前为止完成的代码:
MainActivity.java
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.lang.reflect.Field;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
ListView musicListView;
ArrayList<String> arrayList;
ArrayAdapter musicAdapter;
MediaPlayer musicplayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
musicListView = findViewById(R.id.musicListView);
arrayList = new ArrayList<String>();
Field[] fields = R.raw.class.getFields();
for (int i= i=0; i<fields.length; i++) {
arrayList.add(fields[i].getName());
}
musicAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, arrayList);
musicListView.setAdapter(musicAdapter);
musicListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
if (musicplayer != null) {
musicplayer.release();
}
int resId = getResources().getIdentifier(arrayList.get(i), "raw", getPackageName());
musicplayer = MediaPlayer.create(MainActivity.this, resId);
musicplayer.start();
}
});
}
}
问题一:修正:
当您在 /resources 文件夹或原始文件夹(类似)中创建所有音频文件时,创建名称为 2008 的音频文件并附加一些字符串和当前时间戳。因此,2008 年的所有文件都将在 /resources 文件夹中包含字符串“2008”。因此,要检索解析字符串并检索包含字符串“2008”的音频文件,对于 2009 年和 2010 年也是如此。
从 Raw 文件夹中读取文件:Fix: 在 java 中使用 resources.getBundle() 或在默认目录 [=16] 中创建具有属性 class 的文件=] 文件夹并使用库 InputStream 或 FileInputStream。
是否可以在 /resources 文件夹中创建文件夹和子文件夹?是的,使用 Java 的 mkdir 是可能的。但请记住,创建文件夹名称时要使用像“2008”这样的字符串动态附加当前时间戳。并在检索时,检索各个文件夹中名称为“2008|”、“2009”等的所有文件。如果文件名变得过于递归和乏味,可能可以使用一些具有随机字符串和固定长度的算法。当然,我们可以充分利用字符串的所有排列和组合,以将字符串(文件名)(文件名的可重用排列)的数量保持在最低限度。
希望我回答了你的问题。
我创建了一个简单的 activity 用于播放存储在原始文件夹中的音乐列表,但我想创建另一个活动,例如,MainActivity
- 2008 年的歌曲,其他 Activity 1 - 2009 年的歌曲,其他 Activity 2 - 2010 年的歌曲,等等 那么我如何只从原始文件夹中读取某些文件或者是否可以创建子目录或从其他新文件夹中读取?
以下是我到目前为止完成的代码:
MainActivity.java
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.lang.reflect.Field;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
ListView musicListView;
ArrayList<String> arrayList;
ArrayAdapter musicAdapter;
MediaPlayer musicplayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
musicListView = findViewById(R.id.musicListView);
arrayList = new ArrayList<String>();
Field[] fields = R.raw.class.getFields();
for (int i= i=0; i<fields.length; i++) {
arrayList.add(fields[i].getName());
}
musicAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, arrayList);
musicListView.setAdapter(musicAdapter);
musicListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
if (musicplayer != null) {
musicplayer.release();
}
int resId = getResources().getIdentifier(arrayList.get(i), "raw", getPackageName());
musicplayer = MediaPlayer.create(MainActivity.this, resId);
musicplayer.start();
}
});
}
}
问题一:修正: 当您在 /resources 文件夹或原始文件夹(类似)中创建所有音频文件时,创建名称为 2008 的音频文件并附加一些字符串和当前时间戳。因此,2008 年的所有文件都将在 /resources 文件夹中包含字符串“2008”。因此,要检索解析字符串并检索包含字符串“2008”的音频文件,对于 2009 年和 2010 年也是如此。 从 Raw 文件夹中读取文件:Fix: 在 java 中使用 resources.getBundle() 或在默认目录 [=16] 中创建具有属性 class 的文件=] 文件夹并使用库 InputStream 或 FileInputStream。 是否可以在 /resources 文件夹中创建文件夹和子文件夹?是的,使用 Java 的 mkdir 是可能的。但请记住,创建文件夹名称时要使用像“2008”这样的字符串动态附加当前时间戳。并在检索时,检索各个文件夹中名称为“2008|”、“2009”等的所有文件。如果文件名变得过于递归和乏味,可能可以使用一些具有随机字符串和固定长度的算法。当然,我们可以充分利用字符串的所有排列和组合,以将字符串(文件名)(文件名的可重用排列)的数量保持在最低限度。 希望我回答了你的问题。