【问题标题】:How to make multiple files on an internal storage如何在内部存储上制作多个文件
【发布时间】:2012-01-24 01:39:05
【问题描述】:

嘿,这似乎是一个愚蠢的问题,但我怎样才能在内部存储中制作多个文件而不必发送垃圾邮件

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

【问题讨论】:

    标签: android file file-io android-file


    【解决方案1】:

    乍一看我认为:

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

    应该是

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

    此外,即使您设法克服了当前遇到的问题,我也不认为创建这么多这样的文件会很好地工作。就计算机能够执行的活动而言,操作文件相当慢。 onTouch() 方法获得回调非常非常快。

    创建这么多文件是为了解决什么问题?无论您尝试存储什么数据,几乎可以肯定,比创建这么多名称递增的文件更好的存储方法。

    【讨论】:

    • 我正在尝试制作一个程序,将图片放置在您触摸屏幕的位置,我想要它,以便他们可以保存他们所做的事情。我正在尝试解决我遇到的问题试图保存元素对象。它不会保存,因为我在元素中有一些不打算像位图和矩阵那样序列化的东西。所以我试图通过保存对象的内容来解决这个问题,所以位图和文件中的位置并在打开时重新组装。简而言之,我需要很多文件,因为我认为每个图像都需要一个单独的文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    • 1970-01-01
    • 2021-04-03
    • 2023-03-05
    • 1970-01-01
    • 2013-03-29
    相关资源
    最近更新 更多