0

ちょっとばかげた質問のように思えるかもしれませんが、スパムを送信せずに内部ストレージに複数のファイルを作成するにはどうすればよいですか

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

ユーザーが画面に触れるたびにファイルを作成したいとき。ログに 1 と表示されている場合でも、"name1" の代わりに "

  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);
    }
4

1 に答える 1

0

一見すると、次のように思います。

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

する必要があります

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

また、現在抱えている問題をなんとか乗り越えたとしても、このように多くのファイルを作成してもうまくいくとは思いません。ファイルの操作は、コンピューターが実行できるアクティビティの点でかなり低速です。onTouch() メソッドは非常に高速にコールバックを取得します。

非常に多くのファイルを作成することで、どのような問題を解決しようとしていますか? 格納しようとしているデータが何であれ、増分名で非常に多くのファイルを作成するよりも、ほぼ確実にそれを格納するためのより良い方法があります。

于 2012-01-24T03:03:37.870 に答える