25.$ S; D) R! t% U9 F. y
* S; }' o( F. Q4 T9 w; x 26. return code;- O1 z4 @, n- ~$ u
- f6 d3 G* C t, ~8 ~2 F2 ?
27. }
. U' l6 H# v+ G1 n! e4 J5 Q & w" d9 h" k& f, X
????private String GetTxtCode(String path) // 获取text文件编码
- Z' `1 U$ ^+ Y' Y) D2 \- \ & T+ {8 j- p _4 z+ G7 I6 B3 u
{' H& C4 Z- P. O. N
# E6 v) v' W5 ~+ s: u1 Y String code = "";
6 S# n* n0 K. L5 B& t1 ? " f& w. Q3 @/ o
code = "gb2312";
) m1 M. N; J7 x3 Q4 V: _, D. q
& O1 i1 k/ z# o6 @' y6 K0 I try {
" ^7 ?& ^$ e& e { * N# N; N- o4 a! }
InputStream is = new FileInputStream(path);
& N8 L1 B5 i8 S; U
* n$ s3 x! }# p/ u s: s byte[] head = new byte[3];" ^- T+ }! |+ F8 J+ h
# {. f! c; a8 N8 o* k9 |
try {
! O( r: }8 Q- Q8 V7 V( y8 k 8 r( R3 Y( z( o* p. `" d: z$ B
is.read(head);
8 x! _: d. ]: E& ~( p7 E+ w % S" n$ ~7 f5 A. v' Z. D
if (head[0] == -1 && head[1] == -2)+ K2 s7 y/ k6 ?* ?* o1 f% o
, S+ ]2 c. l3 B+ B" ~ code = "UTF-16";2 B$ K+ j0 X" ~& B
3 J( S8 X Y0 j3 Y8 `/ s$ V0 y if (head[0] == -2 && head[1] == -1)
& F! o! Q' F- @! Q2 h
& |; ~, y' u/ N4 W) l) N! U code = "Unicode";/ y( D5 `- Q$ Y! p3 F
" F i4 |/ G ~2 C
if (head[0] == -17 && head[1] == -69 && head[2] == -65)
7 {% q1 r3 c! p# J9 Q: N
/ Y5 P# ~6 d' n' H; k code = "UTF-8";2 b+ E! Q1 ` S u0 `6 ~0 d
3 p; {' s2 c3 W5 p. M' e, x
} catch (IOException e) {/ g% B2 u- V1 Q0 V7 C
7 t a& E7 g0 e/ u9 K e.printStackTrace();
/ ^( j/ h2 O/ [: ~* c d
, H5 z2 W& ^- F }' j$ l G& b/ f: ?5 {( Y3 G: V
1 C. T5 }) F$ W: ]
} catch (FileNotFoundException e) {6 l0 L3 |2 ]9 \8 \+ N% J$ Y1 r
; W1 @; G2 S, R/ c e.printStackTrace();
$ a2 h* w9 l4 |, g4 _ + v) F; w- d. u, E* l; V& r
}
" U' v, c0 X) Q2 S- b9 u
1 D# t$ {' k9 P& X9 G return code;; y" R+ I( I* E8 G! h7 r
' y1 q2 X' A; P
}7 u- |, s& b! n- [& L" ]* i0 B3 ^
, g( H% O x6 B! e" u" P: U9 j 此时我们就可以将FileCode传入FileInputStream安全打开TXT文件。如果使用二维数组作为返回值读取文件的话,我们最好先读取文件行数以定义数组维度,方法示例如下:
( @) A* f2 w- X7 o2 f3 u' ~6 {, R / x' d4 P( I4 ?. w
[java] view plaincopyprint?/ q8 t2 _" w* g8 A
6 \1 O1 G4 Z8 ^6 e c" m 01.public int GetLines(String fileName) throws IOException //获取文件行数以便建立数组维度
# B1 P* W! h9 @: T8 U
9 _0 ]6 n( C2 s7 ?& o1 T 02. {' e; x& J$ m1 b
+ C# J2 l( ?1 D3 o# x5 _ a 03. FileReader in = new FileReader(fileName);. [' a0 g8 T* g' U- k7 A# J
* p J- S) b! x( k
04. LineNumberReader reader = new LineNumberReader(in);" _" |. L3 j- ?4 g$ L$ B
1 D, _: g7 U! U$ C+ J8 O* P 05. String strLine = reader.readLine();0 D9 V: Q% S/ _% \. Q& {! P" b
. X9 P. F, N, L# k
06. int totalLines = 0;
7 G9 A/ q7 Q* E: d / E( T, ]0 n7 _
07. while (strLine != null) {8 s/ A2 b2 Y( Y% G
; O& k8 L- d/ P$ E9 N, V! r 08. totalLines++; |