为什么我的csv文件没有被一直读取?

时间:2014-03-02 22:40:33

标签: java csv java.util.scanner

所以一般的想法是我使用以下代码读取csv文件:

 try{
            Scanner sc = new Scanner (new File(path));
            sc.useDelimiter(";");
            while (sc.hasNext()){
                String lijn = sc.nextLine();
                System.out.println(lijn);
            }

        }catch (FileNotFoundException fnfe){
            System.out.println(path);
            System.out.println("definition.csv not found");
        }

一切顺利,直到我在第82行停止阅读,即使剩下超过一千行,文件中没有任何内容似乎表明标点符号发生了变化。

文件

province;red;green;blue;x;x
1;42;3;128;Vestisland;x
2;84;6;1;Austisland;x
3;126;9;129;Tyrconnell;x
4;168;12;2;Tyrone;x
5;0;15;130;Ulster;x
6;168;45;177;Blekinge;x
7;84;21;131;Oriel;x
8;126;24;4;Breifne;x
9;168;27;132;Connacht;x
10;0;30;5;Kildare;x
11;42;33;133;Dublin;x
12;84;36;6;Ossory;x
13;126;39;134;Thomond;x
14;168;42;7;Desmond;x
15;0;45;135;Ormond;x
16;42;48;8;Leinster;x
17;84;51;136;Hereford;x
18;126;54;9;Dyfed;x
19;168;57;137;Glamorgan;x
20;0;60;10;Gwent;x
21;42;63;138;Gloucester;x
22;84;66;11;Oxford;x
23;126;69;139;Wiltshire;x #Salisbury
24;168;72;12;Surrey;x
25;0;75;140;Sussex;x
26;42;78;13;Winchester;x
27;126;84;14;Dorset;x
28;84;81;141;Somerset;x
29;168;87;142;Devon;x
30;0;90;15;Worcester;x
31;42;93;143;Cornwall;x
32;84;96;16;Middlesex;x
33;126;99;144;Faereyar;x
34;168;102;17;Shetland;x
35;0;105;145;Innse Gall;x
36;42;108;18;Orkney;x
37;84;111;146;Caithness;x
38;126;114;19;Teviotdale;x
39;168;117;147;Ross;x
40;0;120;20;Moray;x
41;42;123;148;Buchan;x
42;84;126;21;Strathearn;x
43;126;129;149;Gowrie;x
44;168;132;22;Atholl;x
45;0;135;150;Argyll;x
46;42;138;23;Fife;x
47;84;141;151;Clydesdale;x #Strathclyde
48;126;144;24;Lothian;x
49;168;147;152;Carrick;x
50;0;150;25;Galloway;x
51;42;153;153;Dunbar;x
52;84;156;26;Northumberland;x
53;126;159;154;Cumberland;x
54;168;162;27;Isle of Man;x
55;0;165;155;Westmorland;x
56;42;168;28;Durham;x
57;84;171;156;York;x
58;126;174;29;Lancaster;x
59;168;177;157;Chester;x
60;0;180;30;Perfeddwlad;x
61;42;183;158;Lincoln;x
62;84;186;31;Leicester;x
63;126;189;159;Derby;x
64;168;192;32;Gwynedd;x
65;0;195;160;Powys;x
66;42;198;33;Shrewsbury;x
67;84;201;161;Warwick;x
68;126;204;34;Northampton;x
69;168;207;162;Bedford;x
70;0;210;35;Norfolk;x
71;42;0;163;Suffolk;x
72;84;3;36;Essex;x
73;126;6;164;Kent;x
74;168;9;37;Guines;x
75;0;12;165;Boulogne;x
76;42;15;38;Yperen;x
77;84;18;166;Artois;x
78;126;21;39;Brugge;x
79;168;24;167;Zeeland;x
80;0;27;40;Holland;x
81;42;30;168;Westfriesland;x
82;84;33;41;Sticht;x
83;126;36;169;Gelre;x

编辑:链接到csv-file https://mega.co.nz/#!vhJHWJBR!VC2ib4FlLbCxlDaMFhM-bocAcJISJTW_lxoXRBkYJUE

1 个答案:

答案 0 :(得分:0)

以下行似乎有问题:

   while (sc.hasNext()){
        String lijn = sc.nextLine();
        System.out.println(lijn);
   }

尝试将其更改为:

   while (sc.hasNext()){
        String lijn = sc.next();
        System.out.println(lijn);
   }

请注意,此代码现在应该在不同的行上打印每个; - 分隔的字段,这可能是您最初尝试做的,也可能不是,但我认为您的实际意图是存储CSV在某种形式的记忆中,这应该有助于此。