簡體   English   中英

Java:將String []數組元素分配給String?

[英]Java: assign String[] array element to a String?

我對此很陌生,這可能是一個很明顯的答案。 在我的csv腳本中,我試圖弄清楚如何使用CSVReader類讀取csv文件並寫入新的csv文件。 錯誤告訴我writeNext(java.lang.String [])無法應用於(java.lang.String)。 我嘗試使用直接分配和getString()方法,但是沒有任何效果。 有任何想法嗎?

我有以下代碼: UPDATED

public static void main(String[] args) throws IOException {
    //read csv file
    CSVReader reader = new CSVReader(new FileReader(ADDRESS_FILE));

    //write to csv file 
    CSVWriter writer2 = new CSVWriter(new FileWriter("output.csv"), '\t');

    String [] nextLine;
    while ((nextLine = reader.readNext()) != null) {
        System.out.println("Name: [" + nextLine[0] + "]\nAddress: [" + nextLine[1] + "]\nEmail: [" + nextLine[2] + "]");
        String[] newRow = new String[] {nextLine[0],nextLine[2], nextLine[1]};
    }

    //writer2.writeNext(entries);
    writer2.writeAll(newRow);
    writer2.close();

}

錯誤:c:\\ java \\ examples \\ ETHImport.java:46:找不到符號符號:變量newRow位置:類ETHImport writer2.writeAll(newRow);

1個錯誤

提前致謝。

您需要一個字符串數組,而不是單個字符串。 您真的確定要將所有值都拉入一個字符串中開始嗎? 我希望writeNext根據您給它的字符串值編寫一行,並在其中放入逗號等。畢竟,它是一個CsvWriter應該做逗號分隔。

在我看來,您正在使用的writeAll方法可以實現您想要的功能,而writeNext將只寫一行...您在嘗試實現writeAll不能為您做什么? 為什么您需要逐行閱讀它並首先構造entries 您不能只打電話給:

writer2.writeAll(allElements);

我的猜測是,考慮到writer2的構造方式,這將寫一個制表符 writer2文件。

編輯:鑒於注釋中的其他信息,我懷疑您想:

  • 打開一個CsvReader
  • 打開一個CsvWriter (使用適當的Writer;作為構造函數參數)
  • 循環讀取一次作為字符串數組的行(使用CsvReader.readNext() ),為輸出創建一個新的字符串數組,然后調用CsvWriter.writeNext()將該字符串數組寫出到文件中。
  • 在finally塊中關閉CsvReaderCsvWriter (因此,如果出現任何問題,它們仍然會關閉)

從現有的數組構建新的字符串數組將類似於(按照您的示例):

String[] newRow = new String[] { oldRow[0], oldRow[2], oldRow[1] };

那基本上將只保留前三列,在第二和第三列之間切換。 如果您需要其他列,只需以相同的方式進行更改。

請注意,我建議使用FileWriter寫入文件-使用鏈接到該文件的FileOutputStreamOutputStreamWriter ,因為這使您可以設置字符編碼,而不是使用平台默認值。

String[] entries = new String[] { "entry1", "entry2"};

它期望一個數組的條目,而不只是一個字符串。 如果您遵循此示例http://opencsv.sourceforge.net/,請注意

String[] entries = "first#second#third".split("#");

最后的split調用將產生String []。

為您的代碼:

public static void main(String[] args) throws IOException {
        //read csv file
        CSVReader reader = new CSVReader(new FileReader(ADDRESS_FILE));

        //write to csv file 
        CSVWriter writer2 = new CSVWriter(new FileWriter("output.csv"), '\t');

        String [] nextLine;
        while ((nextLine = reader.readNext()) != null) {
                writer2.writeNext( new String[] {nextLine[0],nextLine[2], nextLine[1]});
        }


        writer2.close();

}

要將String輕松放入String[]使用:

String[] entriesArr = new String[]{ entries };

或捷徑

String[] entriesArr = { entries };

現在entriesArr是一個String[]包含一個元件, entries

writer.writeNext(String [])正在尋找一個數組,然后將其寫為“ [0],[1],[2]”

由於您將整個csv文件存儲為一個字符串,因此需要拆分該字符串備份。 實際上,您不應該將每個項目都組合成一個字符串,而應將其存儲為代表csv文件中每一行的字符串數組。

暫無
暫無

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

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