我正在尝试编写一个使用List来保存汽车列表的Android应用。在onCreate()中,我启动了一个适配器,这样我就可以将汽车显示为带有图标的可滚动列表。当我启动时,我运行一个循环来查找所有在手机上保存了QR码的汽车,这样我就不必再创建它们了。在该循环内部是这个代码,它接收每辆车并将其名称与QR码的名称进行比较。如果有相同的信息,它会将代码提供给汽车,并激活一个标志,表明该汽车有一个代码。
private void fillCodes(List<Car> listCars){
File dir = getFilesDir();
if (dir.isDirectory()) {
String[] children = dir.list();
String[] arr = new String[4];
for (int i = 0; i < children.length; i++) {
arr = children[i].split("#");
File f=new File(dir, children[i]);
try {
Bitmap b = BitmapFactory.decodeStream(new FileInputStream(f));
codes.add(b);
Iterator<Car> it = listCars.iterator();
while(it.hasNext()){
Car car = it.next();
if(car.getName().equals(arr[1])){
car.setCode(Integer.parseInt(arr[3]), b);
car.setCode(true);
break;
}}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
Log.i("error", "Decode error");
}
}
}
这是我用来生成和保存代码的方法:
private void saveToInternalSorage(Bitmap bitmapImage,String name, String car, int carID, int dayId){
ContextWrapper cw = new ContextWrapper(getApplicationContext());
File directory = cw.getFilesDir();
Calendar date = Calendar.getInstance();
SimpleDateFormat df = new SimpleDateFormat("yyMMdd");
String dateTicket = df.format(date.getTime());
File mypath=new File(directory,day.concat("#").concat(car).concat("#").concat(Integer.toString(carID)).concat("#").concat(Integer.toString(dayId)).concat("#.jpg"));
FileOutputStream fos = null;
try {
fos = new FileOutputStream(mypath);
bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
Log.i(“directory”,directory.getAbsolutePath()); } 代码运行良好一段时间但是在列表启动后我点击了一个俱乐部我得到了这个错误:
error opening trace file: No such file or directory (2)
我没有使用SD卡来保存我的代码。代码在内部保存。而且我确定错误是由内部的某些内容引起的。我发现通过注释代码直到找到导致错误的位置。
你们知道为什么会这样吗?谢谢!