我不确定比较这两个元素需要做些什么,我知道我需要读取数据文件,这是我做的一个类。
/**
* Helper methods to manage file content.
*/
public class FileUtilities {
/**
* Reads a comma separated file from the classpath.
*/
public List<List<String>> readFileFromClasspath(String file)
throws FileNotFoundException, IOException {
InputStream is = getClass().getClassLoader().getResourceAsStream(file);
InputStreamReader inputStreamReader = new InputStreamReader(is);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
return readFileFromBufferedReader(bufferedReader);
}
/**
* Reads a comma separated file from the filesystem.
*/
public List<List<String>> readFileFromFilesystem(String file)
throws FileNotFoundException, IOException {
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
return readFileFromBufferedReader(bufferedReader);
}
/**
* Reads a comma separacted file from a Reader.
* <ul>
* <li>Lines started with '#' are ignored.</li>
* <li>Spaces before and after the comma are ignored.</li>
* <li>Fields can be surrounded by quotes.
*/
private List<List<String>> readFileFromBufferedReader(
BufferedReader bufferedReader) throws FileNotFoundException,
IOException {
List<List<String>> fileRows = new ArrayList<List<String>>();
String line = bufferedReader.readLine();
while (line != null && line.length() > 0) {
if (line.charAt(0) != '#') {
List<String> rowValues = new ArrayList<String>();
String[] tokens = line
.split(",(?=([^\"]*\"[^\"]*\")*(?![^\"]*\"))");
for (String token : tokens) {
String processedToken = stripQutoes(token);
rowValues.add(processedToken);
}
fileRows.add(rowValues);
}
line = bufferedReader.readLine();
}
bufferedReader.close();
return fileRows;
}
private String stripQutoes(String token) {
String tokenWithoutSpaces = token.trim();
if (tokenWithoutSpaces.length() > 0) {
if (tokenWithoutSpaces.charAt(0) == '"'
&& tokenWithoutSpaces
.charAt(tokenWithoutSpaces.length() - 1) == '"') {
return tokenWithoutSpaces.substring(1,
tokenWithoutSpaces.length() - 1);
}
}
return tokenWithoutSpaces;
}
}
当我读取数据文件时,我没有错误,所以我想我读得正确,而且,我已经实现了使用 Eclipse Luna 4.4.0正确连接java和数据库< / em>和 PostgreSQL 9.4 。
这是我所拥有的主要课程的一部分:
public class Exercise1UpdateOrInsertDataFromFile {
private FileUtilities fileUtilities;
public Exercise1UpdateOrInsertDataFromFile() {
super();
fileUtilities = new FileUtilities();
}
public static void main(String[] args) {
Exercise1UpdateOrInsertDataFromFile app = new Exercise1UpdateOrInsertDataFromFile();
app.run();
}
private void run() {
List<List<String>> fileContents = null;
try {
fileContents = fileUtilities.readFileFromClasspath("exercise1.data");
} catch (FileNotFoundException e) {
System.err.println("ERROR: File not found");
e.printStackTrace();
} catch (IOException e) {
System.err.println("ERROR: I/O error");
e.printStackTrace();
}
if (fileContents == null) {
return;
}
//at this point we asume that we read from file exercise1.data
DBAccessor dbaccessor = new DBAccessor();
dbaccessor.init();
Connection conn = dbaccessor.getConnection();
修改
我已经用另一个更准确和最简单的方式取代了我的答案。
我需要一个例子来说明如何获取从数据文件读取的第一行,如果我知道如何获取数据,我可能会做下一部分。我想我应该以某种方式使用fileUtilities但不知道是什么。
这是file.data:
的内容# Doc_Nmber, Pat_Number, Visit_Date, Price
26902,6574405,30/03/2011,315
26507,6392432,14/03/2010,322
35356,6574405,15/02/2011,475
35252,9062865,07/07/2011,140
我需要更新的表格具有相同的内容。
答案 0 :(得分:0)
我认为我是解决方案,它只是简单地使用:
fileContent.get(index)
我在System.out.println
中使用它并且它有效,现在我需要检查是否可以使用它来与数据库表进行比较(它是我编辑之前的问题),如果有人知道更好的话方式或知道我错了,告诉我一些,如果没有,明天我会接受我的答案是正确的。
谢谢!