如何在Android中设置文件长度为零?

时间:2011-07-05 05:30:01

标签: android file

我想将文件长度设置为零。我使用以下代码

      try 
      {
          new RandomAccessFile(file,"rw").setLength(0);
      } 
      catch (FileNotFoundException e1) 
      {
          // TODO Auto-generated catch block
          Log.i("Exception caught ==> ", e1.toString());
          e1.printStackTrace();
      } 
      catch (IOException e) 
      {
          // TODO Auto-generated catch block
          Log.i("Exception caught ==> ", e.toString());
          e.printStackTrace();
      }

问题,如果我在文件中写的任何内容意味着,它在文件中显示了一些特殊字符,如AAAAAAAAAAAA并跟随我的内容。请给我一些建议。

2 个答案:

答案 0 :(得分:1)

问题可能出在读取缓冲区中。如果你想要读取一个有10个字节数据的文件并且你创建了一个15的byte []那么你将获得额外的null。更好地创建一个大小与文件长度相同的字节数组。获取字符串后,您可以修剪()数据

我尝试使用以下代码,但没有遇到任何问题。

示例代码

RandomAccessFile ram = null;
    byte[] mydata = null;
    try 
    {
        System.out.println("...rrunning my app...");
        String str =Environment.getExternalStorageDirectory().getAbsolutePath()+"/myfile.txt";
//      File f = new File(str);
        ram =new RandomAccessFile(str,"rw");
        ram.setLength(0);
        ram.write("i am fine".getBytes());
        System.out.println("...file length..."+ram.length());
        mydata = new byte[(int) ram.length()];
        ram.close();
        RandomAccessFile ram1 =new RandomAccessFile(str,"rw");
        ram1.read(mydata);
        System.out.println("...data present in 11file..."+new String(mydata));

    } 
    catch (Exception e1) 
    {
        // TODO Auto-generated catch block
        Log.i("Exception caught ==> ", e1.toString());
        e1.printStackTrace();
    } 

答案 1 :(得分:0)

try (FileOutputStream fos = new FileOutputStream("xxx")) {
    fos.write(new byte[0]);
}

try (FileWriter fw = new FileWriter("xxx")) {
    fw.write("");
}