2016-03-08 82 views
0

我正在開發一個Android應用程序,並試圖創建一個不會稀疏的特定大小的文件。我真的希望它佔用Android設備上的空間。如何用特定大小的Java創建文件(不稀疏)

這是我到目前爲止,我是相當新的Java和嘗試了幾個不同的東西來填充(需要waaay長,如果文件是5 GB大)或追加到最後(不起作用?也許我做錯了)。

 File file = new File(dir, "testFile.txt"); 

     try { 
      RandomAccessFile f = new RandomAccessFile(file, "rw"); 
      f.setLength((long) userInputNum * 1048576 * 1024); 
      f.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

目前,正在發生的事情是創建的文件是說我希望它是5 GB,在文件的細節,它說這是5 GB,但實際上並未佔用空間的設備上(這是一個稀疏文件,因爲我發現了)。我怎樣才能讓它創建不稀疏的文件或什麼是快速填充文件的方式?我可以在pc/mac上使用命令來生成文件並將其推送到設備,但我希望應用程序執行此操作。

+0

你想讓文件包含什麼,如果不稀疏? –

+0

@DougStevenson什麼,但無論更快。我只想讓存儲快速填滿。如果還有其他更好的工具,它甚至不必是文本文件。我嘗試了例如.mp4或.zip,但它仍然稀疏,我猜這是預期的。 – tonyloban

+0

爲什麼你不能直接寫空數組到文件中,除非你寫了你想要的大小? –

回答

0

所以此工程:

  byte[] x = new byte[1048576]; 

      RandomAccessFile f = new RandomAccessFile(file, "rw"); 
      while(file.length() != (userInputNum * 1048576 * 1024)) 
      { 
       f.write(x); 
      } 
      f.close(); 

就算它是相當緩慢的,但我相信它的速度更快的應用程序創建一個10 GB的文件VS推一個10 GB的文件到設備。如果有人知道如何優化或完全改變它,請張貼!

工作原理: 它正在寫入文件,直到文件達到用戶需要的大小。我相信我可以做一些不同的事情,而不是字節[],但我會把它留給任何想弄清楚的人。我會自己爲自己做這件事,但希望這可以幫助別人!