Как установить нулевую длину файла в Android? - PullRequest
0 голосов
/ 05 июля 2011

Я хочу установить длину файла на ноль. я использовал следующий код

      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 ]

1 голос
/ 05 июля 2011

Возможно, проблема в буфере чтения. если вы хотите прочитать файл с 10-байтовыми данными и создали байт [] из 15, тогда вы получите дополнительный ноль. лучше создать массив байтов размером, равным длине файла. также после получения строки вы можете обрезать () данные

Я пытался использовать следующий код, но не получил никаких проблем.

Пример кода

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();
    } 
0 голосов
/ 25 апреля 2018

с

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

или также

try (FileWriter fw = new FileWriter("xxx")) {
    fw.write("");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...