Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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读取此文件?_Java_File_Io - Fatal编程技术网

如何用java读取此文件?

如何用java读取此文件?,java,file,io,Java,File,Io,因此,我有一个excel中的.csv文件,我想从中读取数据并使用它。我有一个名为“Travel”的主类,其中包含由“Hotel”类生成的对象hotels 酒店的建造商如下: Hotel(String name, String city, int stars, double cost, String imagePath); Hotel las Américas;Cartagena;4;150000;./data/imagenes/americas.jpg Hilton Garden Inn;Or

因此,我有一个excel中的.csv文件,我想从中读取数据并使用它。我有一个名为“Travel”的主类,其中包含由“Hotel”类生成的对象hotels

酒店的建造商如下:

Hotel(String name, String city, int stars, double cost, String imagePath);
Hotel las Américas;Cartagena;4;150000;./data/imagenes/americas.jpg
Hilton Garden Inn;Orlando;4;260000;./data/imagenes/hilton.jpg
Royal Decameron Barú;Barú;4;878125;./data/imagenes/baru.jpg
Hilton Lima Miraflores;Lima;5;493843;./data/imagenes/lima.jpg
Soho Hotel;Barcelona;3;329053;./data/imagenes/barcelona.jpg
Hotel Darcet;París;2;260248;./data/imagenes/paris.jpg
Corales de Indias;Cartagena;4;294618;./data/imagenes/corales.jpg
Hampton Inn;Orlando;4;374300;./data/imagenes/hamptonInn.jpg
All-Star Movies Resort;Orlando;5;308111;./data/imagenes/disney.jpg
该文件的内容如下:

Hotel(String name, String city, int stars, double cost, String imagePath);
Hotel las Américas;Cartagena;4;150000;./data/imagenes/americas.jpg
Hilton Garden Inn;Orlando;4;260000;./data/imagenes/hilton.jpg
Royal Decameron Barú;Barú;4;878125;./data/imagenes/baru.jpg
Hilton Lima Miraflores;Lima;5;493843;./data/imagenes/lima.jpg
Soho Hotel;Barcelona;3;329053;./data/imagenes/barcelona.jpg
Hotel Darcet;París;2;260248;./data/imagenes/paris.jpg
Corales de Indias;Cartagena;4;294618;./data/imagenes/corales.jpg
Hampton Inn;Orlando;4;374300;./data/imagenes/hamptonInn.jpg
All-Star Movies Resort;Orlando;5;308111;./data/imagenes/disney.jpg
因此,我为读取此文件而编写的代码如下

try(BufferedReader bf = new BufferedReader(new FileReader(fileName))) {
    while(bf.readLine( ) != null) {
        String line = bf.readLine( );
        System.out.println(line);
        line.trim( );
        String data[] = line.split(";");

        Hotel hotel = new Hotel( data[0], data[1], Integer.parseInt( data[2] ), Double.parseDouble( data[3] ), data[4] );
        hoteles.add( hotel );               
    }
} catch(Exception e) {
}
问题是,我在执行此操作时出错,因为我在读取一行时得到null,我的代码有此变化

try(BufferedReader bf = new BufferedReader(new FileReader(fileName))) {
    while(bf.readLine( ) != null) {
        if (bf.readLine()!= null) {
            String line = bf.readLine( );
            System.out.println(line);
            line.trim( );
            String data[] = line.split(";");

            Hotel hotel = new Hotel( data[0], data[1], Integer.parseInt( data[2] ), Double.parseDouble( data[3] ), data[4] );
            hoteles.add( hotel );               
        }
    }    
} catch(Exception e) {
}
即使我保证NOTNULL现在输入代码,我的代码只是读取和保存3家酒店的数据,而不是所有酒店的数据

String line;
while ((line = bf.readLine()) != null) {
   //split and proccess
}
如果我添加System.out.println(行);在line.trim()之前,我有一个输出Hilton

Garden Inn;Orlando;4;260000;./data/imagenes/hilton.jpg
Hilton Lima Miraflores;Lima;5;493843;./data/imagenes/lima.jpg
Hotel Darcet;París;2;260248;./data/imagenes/paris.jpg
Hampton Inn;Orlando;4;374300;./data/imagenes/hamptonInn.jpg
null
这还不是全部。我做错了什么

感谢bf.readLine()的每次调用,请阅读下一行。你必须处理所有的问题

String line;
while ((line = bf.readLine()) != null) {
   //split and proccess
}
每次调用bf.readLine()都会读取下一行。你必须处理所有的问题

String line;
while ((line = bf.readLine()) != null) {
   //split and proccess
}

每次调用
bf.readLine()消耗新行。所以,你跳过了lines@cricket_007那么我应该如何处理这个问题呢?使用
while(line=bf.readLine()!=null)
并确保在while循环之前定义line:
String line=null。此代码将帮助您。基本上,你的while循环需要改变一点。每次调用
bf.readLine()消耗新行。所以,你跳过了lines@cricket_007那么我应该如何处理这个问题呢?使用
while(line=bf.readLine()!=null)
并确保在while循环之前定义line:
String line=null。此代码将帮助您。基本上,你的while循环需要改变一点。