[英]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()
將該字符串數組寫出到文件中。 CsvReader
和CsvWriter
(因此,如果出現任何問題,它們仍然會關閉) 從現有的數組構建新的字符串數組將類似於(按照您的示例):
String[] newRow = new String[] { oldRow[0], oldRow[2], oldRow[1] };
那基本上將只保留前三列,在第二和第三列之間切換。 如果您需要其他列,只需以相同的方式進行更改。
請注意,我不建議使用FileWriter
寫入文件-使用鏈接到該文件的FileOutputStream
和OutputStreamWriter
,因為這使您可以設置字符編碼,而不是使用平台默認值。
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.