Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅获取Java中CSV的前两个位置_Java_Csv - Fatal编程技术网

仅获取Java中CSV的前两个位置

仅获取Java中CSV的前两个位置,java,csv,Java,Csv,我有一个包含德国汽车牌照的csv文件。结构如下: B、 德国柏林 第一个B是城市的第一个大写字母,第二个位置是城市,第三个位置是国家 我只想要前两个位置,只有B和Berlin 我知道如何用Java读取CSV文件,但我不知道如何告诉编译器“忽略”第三个位置 public void read(){ InputStream inputStream = getResources().openRawResource(R.raw.carplates); BufferedReader rea

我有一个包含德国汽车牌照的csv文件。结构如下: B、 德国柏林 第一个B是城市的第一个大写字母,第二个位置是城市,第三个位置是国家

我只想要前两个位置,只有B和Berlin

我知道如何用Java读取CSV文件,但我不知道如何告诉编译器“忽略”第三个位置

public void read(){
    InputStream inputStream = getResources().openRawResource(R.raw.carplates);

    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
    try {
        String csvLine;
        while ((csvLine = reader.readLine()) != null) {
            String[] row = csvLine.split(",");
            for(int i=0; i<row.length;i++){
                Log.d("ROWS", row[i]);
            }
 }
public void read(){
InputStream InputStream=getResources().openRawResource(R.raw.carplates);
BufferedReader reader=新的BufferedReader(新的InputStreamReader(inputStream));
试一试{
弦线;
而((csvLine=reader.readLine())!=null){
字符串[]行=csvLine.split(“,”);

对于(int i=0;i您可以更新for循环条件,使其仅读取列表的前两个元素

差不多

public void read(){
    InputStream inputStream = getResources().openRawResource(R.raw.kfzkennzeichen);

    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
    try {
        String csvLine;
        while ((csvLine = reader.readLine()) != null) {
            String[] row = csvLine.split(",");
            if (row.lenght >= 2){
               for(int i=0; i<2;i++){
                  Log.d("ROWS", row[i]);
              }
            }else{
                Log.d("Invalid Row");
            }
 }
public void read(){
InputStream InputStream=getResources().openRawResource(R.raw.kfzkennzeichen);
BufferedReader reader=新的BufferedReader(新的InputStreamReader(inputStream));
试一试{
弦线;
而((csvLine=reader.readLine())!=null){
字符串[]行=csvLine.split(“,”);
如果(行长>=2){

对于(int i=0;i您可以更新for循环条件,使其仅读取列表的前两个元素

差不多

public void read(){
    InputStream inputStream = getResources().openRawResource(R.raw.kfzkennzeichen);

    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
    try {
        String csvLine;
        while ((csvLine = reader.readLine()) != null) {
            String[] row = csvLine.split(",");
            if (row.lenght >= 2){
               for(int i=0; i<2;i++){
                  Log.d("ROWS", row[i]);
              }
            }else{
                Log.d("Invalid Row");
            }
 }
public void read(){
InputStream InputStream=getResources().openRawResource(R.raw.kfzkennzeichen);
BufferedReader reader=新的BufferedReader(新的InputStreamReader(inputStream));
试一试{
弦线;
而((csvLine=reader.readLine())!=null){
字符串[]行=csvLine.split(“,”);
如果(行长>=2){

对于(int i=0;i跳过打印最后一行:

for(int i=0; i<row.length - 1; i++){
    Log.d("ROWS", row[i]);
}

for(int i=0;i跳过打印最后一行:

for(int i=0; i<row.length - 1; i++){
    Log.d("ROWS", row[i]);
}
for(inti=0;i
//理想情况下,这应该在配置文件中
int maxIndexToRead=2;
对于(int i=0;i
是的,Allman风格的规则;)

//理想情况下,这应该在配置文件中
int maxIndexToRead=2;
对于(int i=0;i

是的,Allman样式规则;)

如果您愿意,您可以消除for循环,如:

public void read() {
    InputStream inputStream = getResources().openRawResource(R.raw.carplates);

    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
    try {
        String csvLine;
        while((csvLine = reader.readLine()) != null) {
            String[] row = csvLine.split(",");
            Log.d("First capital letter of the city: ", row[0]);
            Log.d("City: ", row[1]);
        }
    } catch(...) {
        //...
    }
}
但正如@Akceptor在另一个答案中提到的那样,只有在您确定CSV始终采用这种格式时,才可以这样做


此外,通过这种方法,如果您愿意,您可以轻松地将行转换为类实例。

如果您愿意,您可以消除for循环,如:

public void read() {
    InputStream inputStream = getResources().openRawResource(R.raw.carplates);

    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
    try {
        String csvLine;
        while((csvLine = reader.readLine()) != null) {
            String[] row = csvLine.split(",");
            Log.d("First capital letter of the city: ", row[0]);
            Log.d("City: ", row[1]);
        }
    } catch(...) {
        //...
    }
}
但正如@Akceptor在另一个答案中提到的那样,只有在您确定CSV始终采用这种格式时,才可以这样做

同样,通过这种方法,如果需要,您可以轻松地将行转换为类实例。

apachecommons CSV 关于您的具体问题,其他答案都是正确的。此外,下面是使用库的示例代码,以使这项工作更容易

注意我们如何检索这3个字段中的每一个,但只使用前2个字段,忽略第三个字段(根据您的问题)

package com.basilbourque.example;
导入org.apache.commons.csv.CSVFormat;
导入org.apache.commons.csv.CSVRecord;
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.nio.file.Files;
导入java.nio.file.Path;
导入java.nio.file.path;
公共级城市旅行者{
公共静态void main(字符串[]args){
CityLetter应用程序=新CityLetter();
app.doit();
}
私有无效doit(){
试一试{
//找到要导入和分析的文件。
Path Path=Path.get(“/Users/basilbourque/CityLetter.csv”);
if(Files.notExists(path)){System.out.println(“错误-找不到路径:+path+”的文件。消息#f31b73b0-7ba7-4ea8-81b4-c8d768dde99d。”);)
//读取CSV文件。
//对于每一行,使用三个字段中的两个(字母、城市),而忽略第三个字段(国家)。
BufferedReader reader=Files.newBufferedReader(路径);
Iterablerecords=CSVFormat.RFC4180.parse(reader);
用于(CSVRecord记录:记录){
//B,柏林,德国
//巴黎,法国
//T,突尼斯,突尼斯
String letter=record.get(1-1);//讨厌的基于零的索引计数。
字符串city=record.get(2-1);
String country=record.get(3-1);//忽略。
//使用3个值中的2个。
System.out.println(“字母:+字母+”|城市:+城市);
//城市=新城(字母,城市);
//城市列表。添加(城市);
}
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
跑步的时候

信函:B |城市:柏林

信函:p|城市:巴黎

信:T|市:突尼斯

按名称引用列 或者,您可以按名称而不是索引号引用每一列。添加标题行,然后在
CSVFormat.RFC4180
上添加另一个调用以查找这些标题

请参阅类似问题的示例代码。

Apache Commons CSV 关于您的具体问题,其他答案都是正确的。此外,下面是使用库的示例代码,以使这项工作更容易

注意我们如何检索这3个字段中的每一个,但只使用前2个字段,忽略第三个字段(根据您的问题)

package com.basilbourque.example;
导入org.apache.commons.csv.CSVFormat;
导入org.apache.commons.csv.CSVRecord;
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.nio.file.Files;
导入java.nio.file.Path;
导入java.nio.file.path;
公共级城市旅行者{
公共静态void main(字符串[]args){
CityLetter应用程序=新CityLetter();
app.doit();
}
私有无效doit(){
试一试{
//瞧