由于我对 Java 很陌生,我想知道安装新库的正确过程(那些在我的 linux dist 存储库中不可用)。我应该把它们放在哪里?以及如何安装它们?例如,我下载了 openCsv ( http://opencsv.sourceforge.net/ ),但我不知道如何安装它。
我正在从resultSet填充文件,如下所示:
while(rs.next()){
String[] entries = new String[3];
entries[0] = rs.getString(1);
entries[1] = ",";
entries[2] = rs.getString(2);
println("entries : "+entries);
writer.writeNext(entries);
}
Run Code Online (Sandbox Code Playgroud)
当我打开excel文件时,值包含双引号.所以test1,test2,test3从数据库读取并写入.csv文件时变为"test1","test2","test3"
如何将文本写入文件但不包括引号?
当我将条目打印到控制台时,不会打印双引号,所以我不知道它们被添加到何处?
public class CSVTeast {
public static void main(String[] args) {
CSVTeast obj = new CSVTeast();
obj.run();
}
public void run() {
String csvFile = "D:\\text.csv";
BufferedReader br = null;
String line = "";
String cvsSplitBy = "~";
try {
br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {
// use comma as separator
String[] csvRead = line.split(cvsSplitBy);
System.out.println("Value [date= " + csvRead[5]
+ " , name=" + csvRead[9]+"]");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch …Run Code Online (Sandbox Code Playgroud) 我有一个csv文件.我想从中提取特定的列.例如:说,我有csv:
id1,caste1,salary,name1
63,Graham,101153.06,Abraham
103,Joseph,122451.02,Charlie
63,Webster,127965.91,Violet
76,Smith,156150.62,Eric
97,Moreno,55867.74,Mia
65,Reynolds,106918.14,Richard
Run Code Online (Sandbox Code Playgroud)
如何使用opencsv只读取头文件caste1中的数据?
我正在使用 OpenCsv,该new CSVWriter()方法将 Writer 作为参数。
我想要实现的是避免写入文件系统,而是返回一个InputStream. 我不知道该怎么做。不是很熟悉Streams也是我用的JAVA 7。
我是否可以让 writeValues 方法返回一个 InputStream 并避免在文件系统上写入输出。
这是我的工作实现:
private static void writeValues(String[][] cellValues) throws IOException {
CSVWriter writer = new CSVWriter(new FileWriter("/tmp/myfile.csv"));
for(String[] row : cellValues) {
writer.writeNext(row);
}
writer.close();
}
Run Code Online (Sandbox Code Playgroud)
这就是我想要达到的目标。如何转换上述方法以避免使用 FileWriter。
private static InputStream writeValues(String[][] cellValues) throws IOException {
InputStream inputStream = ?;
CSVWriter writer = new CSVWriter(?);
for(String[] row : cellValues) {
writer.writeNext(row);
}
writer.close();
return inputStream;
}
Run Code Online (Sandbox Code Playgroud) 当使用带注释的 opencsv 和 StatefulBeanToCsv 时,当 bean 列表为空时,不会写入标头。我认为这个测试会成功,但事实并非如此。
private class bean1 {
@CsvBindByName(column = "column1")
private String col1;
public String getCol1() {
return col1;
}
public void setCol1(String col1) {
this.col1 = col1;
}
}
@Test
public void testOpenCsvEmptyBeanList() throws CsvException {
StringWriter sw = new StringWriter();
StatefulBeanToCsv<bean1> sbc = new StatefulBeanToCsvBuilder<bean1>(sw)
.withLineEnd(CSVWriter.DEFAULT_LINE_END)
.build();
// empty bean list
sbc.write(new ArrayList<>());
assertEquals("column1" + CSVWriter.DEFAULT_LINE_END, sw.toString());
}
Run Code Online (Sandbox Code Playgroud)
有什么想法可以让这个测试有效吗?
我正在使用opencsv将 Java bean 写入带有标题的 CSV 文件。文件名包含当前日期。如果用户在同一天第二次运行它,它会附加到文件中,但会添加另一个标题行。
如何附加到文件但没有列标题。
public class CSVExport {
final File USERHOME = new File(System.getProperty("user.home"));
final List<saleExport> listSaleExport = new ArrayList<>();
final ObjectMapper mapper = new ObjectMapper();
public void createCsvFile(String Region, Map<String, String> currentSale) throws IOException {
mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
// use column position mapping strategy for no headers?
LocalDate today = LocalDate.now();
final SaleExport saleExport = mapper.convertValue(currentSale, SaleExport.class);
listSaleExport.add(saleExport);
writeToFile(today +" LA.csv", listSaleExport);
}
public void writeToFile(String filename, List<listSaleExport> listSaleExport) throws IOException {
File file = …Run Code Online (Sandbox Code Playgroud) 我正在使用 OpenCsv 为我的 android 应用程序解析 .csv 文件。我用 kotlin 编写代码。这是我的代码:
这就是我解析 csv 文件的方式:
val beans: List<csvDataClass> = CsvToBeanBuilder<csvDataClass>(FileReader(file))
.withType(csvDataClass::class.java).build().parse()
for (i:Int in 0..beans.size-1) {
Log.d("Tag", " NAME = ${beans.get(i).name} Number = ${beans.get(i).phone_one_value}")
}
Run Code Online (Sandbox Code Playgroud)
这是我要将 csv 数据转换为的对象类。
class csvDataClass {
@CsvBindByName (column = "Name")
var name:String = ""
@CsvBindByName (column = "Phone 1 - Value")
var phone_one_value:Int = 0
constructor() {}
constructor(name: String, phone_one_value: Int) {
this.name = name
this.phone_one_value = phone_one_value
}
Run Code Online (Sandbox Code Playgroud)
}
我在 build.gradle 文件中添加了这一行:
implementation 'com.opencsv:opencsv:4.1'
Run Code Online (Sandbox Code Playgroud)
这是我的 csv 文件内容: …
在我的手机昨晚更新之前,我的代码运行良好。我正在使用 opencsv 将手机存储中的 CSV 文件读取到我的应用程序中的数组中。这是代码...
public static String[] getFileContents(File file) {
String[] contentsArray = new String[500];
if(file.exists()) {
try {
CSVReader reader = new CSVReader(new FileReader(file));
String[] nextLine;
while ((nextLine = reader.readNext()) != null) {
System.arraycopy(nextLine, 0, contentsArray, 0, nextLine.length);
}
} catch (Exception e) {
System.out.println("Failed file: " + file);
System.out.println("You are here and sad but at least the file exists");
e.printStackTrace();
}
} else {
System.out.println("File does not exist");
}
return contentsArray;
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误...
I/System.out: Failed file: /storage/emulated/0/Documents/text/36-12644-Test …Run Code Online (Sandbox Code Playgroud) 我正在编写代码来处理 tar.gz 文件列表,其中有多个 csv 文件。我遇到了下面的错误
com.opencsv.exceptions.CsvMalformedLineException: Unterminated quoted field at end of CSV line. Beginning of lost text: [,,,,,,
]
at com.opencsv.CSVReader.primeNextRecord(CSVReader.java:245)
at com.opencsv.CSVReader.flexibleRead(CSVReader.java:598)
at com.opencsv.CSVReader.readNext(CSVReader.java:204)
at uk.ac.shef.inf.analysis.Test.readAllLines(Test.java:64)
at uk.ac.shef.inf.analysis.Test.main(Test.java:42)
Run Code Online (Sandbox Code Playgroud)
导致此问题的代码如下,B 行。
public class Test {
public static void main(String[] args) {
try {
Path source = Paths.get("/home/xxxx/Work/data/amazon/labelled/small/Books_5.json.1.tar.gz");
InputStream fi = Files.newInputStream(source);
BufferedInputStream bi = new BufferedInputStream(fi);
GzipCompressorInputStream gzi = new GzipCompressorInputStream(bi);
TarArchiveInputStream ti = new TarArchiveInputStream(gzi);
CSVParser parser = new CSVParserBuilder().withStrictQuotes(true)
.withQuoteChar('"').withSeparator(',').
.withEscapeChar('|'). // Line A
build();
BufferedReader br …Run Code Online (Sandbox Code Playgroud)