Как сделать несколько файлов на внутреннем хранилище - PullRequest
0 голосов
/ 24 января 2012

Эй, это может показаться глупым вопросом, но как я могу сделать несколько файлов во внутреннем хранилище без необходимости спама

   f = new File(context.getFilesDir(),filename);

когда я хочу создать файл каждый раз, когда пользователь касается экрана. Я пытался получить его, если имя файла имеет номер в конце, поэтому при создании файла он меняется, но программа всегда возвращается к оригиналу файл "name0" вместо "name1", даже если в логах написано, что должно быть 1

  String filename = "name"+num;

что мне нужно изменить, чтобы программа генерировала новый файл данных каждый раз, когда пользователь касается экрана?


Метод Ontouch для класса панели

  public boolean onTouchEvent(MotionEvent event) {
 mainactivity.setvalue(newvalue);
            mElements.add(new Element(getResources(),(int) event.getX(),(int) event.getY(),this.getContext()));
            Log.v("Gesture", "is newvalue: "+newvalue);   
                newvalue++;
        return super.onTouchEvent(event);
            }

Класс элементов

public Element(Resources res, int x, int y,Context context) {
  location2 =item3;
    ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    mBitmap = BitmapFactory.decodeResource(res, location2);
    mX = x - mBitmap.getWidth() / 2;
    mY = y - mBitmap.getHeight() / 2;
    mBitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); 
     byteArray = stream.toByteArray(); 
     writeBitmap(byteArray, context);
     writemX(mX,context);
     writemY(mY,context);
     Log.v("Element", "num: "+num);
    num++;

}

метод writeX

public void writemX(int x,Context context){
        value=getvalue();
        Log.v("main", "made it to method writeX" );
        Log.v("main", "value before= "+getvalue());         
File f = new File(context.getFilesDir(),postionX);

            try {
    fos = new FileOutputStream(f);
    objectwrite = new ObjectOutputStream(fos);
    objectwrite.writeByte(x);
        fos.close(); 
     Log.v("main", "file was  made File ");

     }catch (FileNotFoundException e){
        e.printStackTrace();
        Log.v("main", "file was not made File not found ");

       } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        Log.v("main", "file was not made File IOException ");
    }

public int  getvalue(){
        Log.v("main", "getvale value = "+value);
        return(value);
    }

    public void setvalue(int newvalue){
        value=newvalue;
        Log.v("main", "setvale value = "+value);
    }

1 Ответ

0 голосов
/ 24 января 2012

На первый взгляд я думаю:

new Element(---,---,---,this.getContext());

должно быть

new Element(---,---,---,YourActivity.this);

Кроме того, я не думаю, что создание такого количества файлов будет работать очень хорошо, даже еслиВам удается преодолеть проблему, с которой вы столкнулись в настоящее время.Работа с файлами довольно медленная с точки зрения действий, на которые способны компьютеры.метод onTouch () очень быстро получает обратные вызовы.

Какую проблему вы пытаетесь решить, создавая так много файлов?Какие бы данные вы ни пытались сохранить, это почти наверняка лучший способ сохранить их, чем создавать так много файлов с увеличивающимися именами.

...