2014-03-02 122 views
0

所以总的想法是,我用下面的代码在CSV文件中读取:为什么我的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文件https://mega.co.nz/#!vhJHWJBR!VC2ib4FlLbCxlDaMFhM-bocAcJISJTW_lxoXRBkYJUE

+1

这是CSV;那你为什么不使用OpenCSV这样的库来读取它呢? – fge

+0

它停在哪条线上?它包含什么? – jsalonen

+0

@ fge,因为我是csv的noob,并认为我的方法最简单。正如OP所述,我从未听说过OpenCSV – BURNS

回答

0

下面的线似乎是有问题的:

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

试试这个更改为:

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

请注意,此代码现在应该在不同的行上打印每个; -delimited字段,这可能是也可能不是您最初尝试执行的操作,但我认为您的实际意图是以某种形式将CSV存储在内存中,这应该对此有所帮助。

+0

不,没有帮助。 – BURNS

+0

@BURNS,刚刚编辑我的答案。如果上面的更改也不起作用,那么我认为您可能需要将文件上传到某处,以便我们可以看到原始文件。很难猜测发生了什么,因为当你粘贴到SO中时,有时不可见的角色会丢失。 – merlin2011

+0

添加链接到OP :) – BURNS

相关问题