簡體   English   中英

如何將數組寫入文件Java

[英]how to write an array to a file Java

我一直在嘗試將數組寫入文件。 我知道如何將整數或字符串寫入文件,但是要帶一個數組會使我感到困惑。 我現在正在使用這個:

public static void write (String file, int[]x) throws IOException{
    BufferedWriter outputWriter = null;
    outputWriter = new BufferedWriter(new FileWriter(filename));
    outputWriter.write("hi");// Here I know i cant just write x[0] or anything. Do i need 
                             //to loop in order to write the array?
    outputWriter.newLine();
    outputWriter.flush();  
    outputWriter.close();  



}

您可以使用ObjectOutputStream類將對象寫入基礎流。

outputStream = new ObjectOutputStream(new FileOutputStream(filename));
outputStream.writeObject(x);

然后像這樣讀回Object -

inputStream = new ObjectInputStream(new FileInputStream(filename));
x = (int[])inputStream.readObject()

就像其他人說的那樣,您可以遍歷數組並逐一打印出元素。 為了使輸出顯示為數字而不是您看到的“字母和符號”,您需要將每個元素轉換為字符串。 因此,您的代碼將如下所示:

public static void write (String filename, int[]x) throws IOException{
  BufferedWriter outputWriter = null;
  outputWriter = new BufferedWriter(new FileWriter(filename));
  for (int i = 0; i < x.length; i++) {
    // Maybe:
    outputWriter.write(x[i]+"");
    // Or:
    outputWriter.write(Integer.toString(x[i]);
    outputWriter.newLine();
  }
  outputWriter.flush();  
  outputWriter.close();  
}

如果只想打印出[1, 2, 3, ....]類的數組,則可以使用此襯紙替換循環:

outputWriter.write(Arrays.toString(x));

如果您對Apache Commons lib沒問題

outputWriter.write(ArrayUtils.join(array, ","));

只需遍歷數組中的元素即可。

例如:

for(int i=0; numOfElements > i; i++)
{
outputWriter.write(array[i]);
}
//finish up down here
private static void saveArrayToFile(String fileName, int[] array) throws IOException {
    Files.write( // write to file
        Paths.get(fileName), // get path from file
        Collections.singleton(Arrays.toString(array)), // transform array to collection using singleton
        Charset.forName("UTF-8") // formatting
    );
}

如果結果供人類閱讀並且數組的元素已定義了正確的toString() ...

outputString.write(Arrays.toString(array));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM