簡體   English   中英

如何使用Printwriter將String數組寫入Java中的文本文件?

[英]How do I write String arrays to a text file in java using Printwriter?

我需要幫助,使用Printwriter將數組對象的某些內容(以下是我正在使用的兩個數組示例)寫入文本文件。 有任何想法嗎? 我是一個初學者,所以越簡單越好,謝謝!

Astronauts[0][0] = new Passengers(-1, "", 1, 0, 0, "", "", 0, "", "", "", "", ""); 

Astronauts[0][1] = new Passengers(0, "Pilot", 2424, 14, 0, "Bruce", "Banner", 0, "678-884-6325", "Mom", "678-884-6323","","");

Astronauts[0][2] = new Passengers(0, "Pilot", 1248, 3, 0, "Sally", "Forth", 0, "678-921-1135", "Hannah", "678-921-1130","","");


 Astronauts[1][0] = new Passengers(-1, "", 2, 0, 0, "", "", 0, "", "", "", "", "");

Astronauts[1][1] = new Passengers(0, "Pilot", 1022, 55, 0, "Buz", "Aldrin", 0, "404-014-4553", "June", "404-014-4555","","");

Astronauts[1][2] = new Passengers(0, "Pilot", 2813, 8, 0, "Alice", "Dyer", 0, "678-884-6325", "Mom", "678-884-6323","","");

我不確定是否能正確找到您的問題,因為將數組的內容寫入文件非常簡單:

String[] arr = {"a", "b", "c"};
try {
    PrintWriter pw = new PrintWriter(new FileWriter("output.txt"));
    pw.println(Arrays.toString(arr));
    pw.flush();
    System.out.println("Finished");
} catch (IOException e) {
    e.printStackTrace();
}

[編輯]

我知道我可能沒有解決您的全部問題。 如果您想知道如何編寫數組中包含的對象的所需特征,可以重寫自定義類的toString()方法:

class A {
    public static void main(String[] args) {
        B[] bs = {new B("a", "b"),
                  new B("c", "d"),
                  new B("e", "f"),
                  new B("g", "h")};

        try {
            PrintWriter pw = new PrintWriter(new FileWriter("output.txt"));
            for (B b : bs) {
                pw.println(b);
            }
            pw.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("Finished");
    }
}

class B {
    private String prop1;
    private String prop2;

    public B (String prop1, String prop2) {
        this.prop1 = prop1;
        this.prop2 = prop2;
    }

    @Override
    public String toString() {
        return this.prop1 + " " + this.prop2;
    }
}

PrintWriter接受String ,因此您可以覆蓋Astronauts類中的toString()方法,然后遍歷一維或二維維數組:

順便說一句,變量名應以小寫字母開頭。

  • 一維

     for (int i = 0; i < astronauts.length; i++) { pw.print(Arrays.toString(astronauts[i]); } 
  • 2維

     for (int i = 0; i < astronauts.length; i++) { for (int j = 0; j < astronauts[i].length; i++) { pw.print(astronauts[i][j]); } } 

不要忘記flush()close() PrintWriter

這是您可能要執行的操作。

String twoDArray[][] = {{"one","two"},{"one","two"},{"one","two"}};
    String filePath = "C:/Users/arjun.lajpal/Desktop/dummyFile.txt";
    PrintWriter writer = null;
    try {
        writer = new PrintWriter(filePath);
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    writer.printf("%20s%20s","Astraunauts","Passengers");
    writer.println();
    for(int i=0;i<twoDArray.length;i++){
        for(int j=0;j<twoDArray[i].length;j++)
            writer.printf("%20s",twoDArray[i][j]);

        writer.println();

        }
    writer.flush();
    writer.close();

這不僅可以創建文件,而且還可以采用表格格式將其寫入文件,而無需覆蓋toString()方法。

由於您的數組內容都是同一類的Passengers ,如果您對默認的Array.toString格式不滿意,我將在Passengers中創建一個toString()方法,該方法返回所需的字符串表示形式。

然后:

try {
       PrintWriter printWriter = new PrintWriter(new FileWriter("output.txt"));

       for(Passengers[] passengers: Astronauts) {
           for(Passengers passenger: passengers) {
                printWriter.println(passenger);
           }
       }

       printWriter.close();  // no need to flush, since close() does it anyway.

   } catch (IOException e) {
       e.printStackTrace();
   }

注意:正如其他人提到的那樣,我將Astronauts變量重命名為小寫的astronauts 我還將Passengers類重命名為Passenger

編輯:使用上面的代碼,輸出文件應出現在您從中運行程序的工作目錄中。 或者,您可以提供完整的文件路徑,例如C:/Users/Me/directory/output.txt但是在這種情況下,您需要確保目錄路徑已經存在。

另一種選擇是修改代碼以自動為您創建路徑:

    File file = new File ("C:/Users/Me/directory/output.txt");
    file.getParentFile().mkdirs();
    PrintWriter printWriter = new PrintWriter(file);

暫無
暫無

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

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