为什么 Android 看不到资产中的现有文件?
Why is Android not seeing existing files in assets?
我正在使用 Android studio 开发我的 android 应用程序。我在子文件夹 red_voznje 的资产文件夹中创建了我在 android 工作室中使用的文件。
这是我的代码
fileLinija = "smbzag";
if(TimeDay == 7) fileLinija += "sub";
else if(TimeDay == 1) fileLinija += "ned";
GetFromTime(fileLinija);
fileLinija = "zagsmb";
if(TimeDay == 7) fileLinija += "sub";
else if(TimeDay == 1) fileLinija += "ned";
GetToTime(fileLinija);
这里是 GetToTime 函数,GetFromTime 基本相同我只是将结果保存在 TimeMinFromSmb 而不是 TimeMinToSmb
public void GetToTime(String file){
AssetManager mngr;
String red = null;
int Timemin=0;
int Timeh=0;
try{
mngr = getAssets();
InputStream is = mngr.open(file);
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
do
{
red=br.readLine();
Timeh = Character.getNumericValue(red.charAt(0));
if(Timeh == 9){
break;
}
Timeh *= 10;
Timeh += Character.getNumericValue(red.charAt(1));
Timemin = Character.getNumericValue(red.charAt(3));
Timemin *= 10;
Timemin += Character.getNumericValue(red.charAt(4));
LinijaBusaToSmb = Character.getNumericValue(red.charAt(6));
LinijaBusaToSmb *= 10;
LinijaBusaToSmb += Character.getNumericValue(red.charAt(7));
}while((TimeH>Timeh)||((TimeH == Timeh)&&(Timemin<TimeMin)));//popraviti
if(TimeMin <= Timemin) {
TimeMinSmjerToSmb = Timemin - TimeMin;
TimeHSmjerToSmb = Timeh - TimeH;
}else{
TimeMinSmjerToSmb = 60 - TimeMin + Timemin;
TimeHSmjerToSmb = Timeh - TimeH - 1;
}
}
catch (Exception e){}
}
smbzag 和 zagsmb 都存在于 Assets 文件夹中,但 smbzag 未打开在从资产管理器创建 InputStream 时停止。我该怎么做才能解决这个问题?
确保您正在拨打电话
getAssets() 从你的 activity.
否则你可以尝试这个解决方案:
确保你创建了assets文件夹,并把所有文件放在app.iml文件中的下行指定的路径中app 目录.
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
我删除了所有资产并使用 windows 资源管理器将它们添加到资产目录中,并添加了扩展名 .txt
我正在使用 Android studio 开发我的 android 应用程序。我在子文件夹 red_voznje 的资产文件夹中创建了我在 android 工作室中使用的文件。 这是我的代码
fileLinija = "smbzag";
if(TimeDay == 7) fileLinija += "sub";
else if(TimeDay == 1) fileLinija += "ned";
GetFromTime(fileLinija);
fileLinija = "zagsmb";
if(TimeDay == 7) fileLinija += "sub";
else if(TimeDay == 1) fileLinija += "ned";
GetToTime(fileLinija);
这里是 GetToTime 函数,GetFromTime 基本相同我只是将结果保存在 TimeMinFromSmb 而不是 TimeMinToSmb
public void GetToTime(String file){
AssetManager mngr;
String red = null;
int Timemin=0;
int Timeh=0;
try{
mngr = getAssets();
InputStream is = mngr.open(file);
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
do
{
red=br.readLine();
Timeh = Character.getNumericValue(red.charAt(0));
if(Timeh == 9){
break;
}
Timeh *= 10;
Timeh += Character.getNumericValue(red.charAt(1));
Timemin = Character.getNumericValue(red.charAt(3));
Timemin *= 10;
Timemin += Character.getNumericValue(red.charAt(4));
LinijaBusaToSmb = Character.getNumericValue(red.charAt(6));
LinijaBusaToSmb *= 10;
LinijaBusaToSmb += Character.getNumericValue(red.charAt(7));
}while((TimeH>Timeh)||((TimeH == Timeh)&&(Timemin<TimeMin)));//popraviti
if(TimeMin <= Timemin) {
TimeMinSmjerToSmb = Timemin - TimeMin;
TimeHSmjerToSmb = Timeh - TimeH;
}else{
TimeMinSmjerToSmb = 60 - TimeMin + Timemin;
TimeHSmjerToSmb = Timeh - TimeH - 1;
}
}
catch (Exception e){}
}
smbzag 和 zagsmb 都存在于 Assets 文件夹中,但 smbzag 未打开在从资产管理器创建 InputStream 时停止。我该怎么做才能解决这个问题?
确保您正在拨打电话
getAssets() 从你的 activity.
否则你可以尝试这个解决方案:
确保你创建了assets文件夹,并把所有文件放在app.iml文件中的下行指定的路径中app 目录.
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
我删除了所有资产并使用 windows 资源管理器将它们添加到资产目录中,并添加了扩展名 .txt