private void ReadTxt() throws IOException {
File f = new File("2008-07-01_100643.txt");
FileInputStream fstream = new FileInputStream(f);
BufferedReader br = new BufferedReader(new InputStreamReader(fstream, "unicode"));
String str = "";
StringBuffer bf = new StringBuffer();
String[] strs = new String[1000];
while ((str = br.readLine()) != null) {
// bf.append(str);
//System.out.println(str);
strs = str.split(" ");
}
for(int i=0;i<strs.length;i++){
System.out.println(strs[i]);
} br.close();
fstream.close(); FileWriter fw = new FileWriter("a.txt", false);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(bf + "");
bw.close();
fw.close(); }
为什么我数组里 只拿到了左后一行 ?组后行覆盖了前面的?那怎么样能拿到全部呢,已经是个数组接受了呀。

解决方案 »

  1.   

    当然,你没有赋值 做个全局变量。String temp = "";for(int i=0;i <strs.length;i++){ 
    temp = temp + strs[i];
    System.out.println(temp);

      

  2.   

    strs里就支拿到了最后行 
    for(int i=0;i <strs.length;i++){ 
    temp = temp + strs[i];
    System.out.println(temp);

    这样做还是只得到了最后一行而已哦。
      

  3.   

    没注意你已经有个str了temp位置 写成str即可
      

  4.   

    没明白?你拿出来的值没有累加for(int i=0;i <strs.length;i++){ 
    bf.append(str[i]); 
    System.out.println(bf);

      

  5.   

    哦  刚才这句米看到~现在就清楚了。谢谢你!不过我自己有这样想了下:
    while ((str = br.readLine()) != null) {
    bf.append(str);
    strs = str.split(" ");
    }
    String ss = bf.toString();
    strs = ss.split(" ");
    // System.out.print(strs.length);
    for (int i = 0; i < strs.length; i++) {
    System.out.println(strs[i]);
    }
    我把bf给到个String里 然后在用split分割 然后在给回数组。这样做 是不是很麻烦?不效率?
      

  6.   

    strs = str.split(" ");是对最后一行进行操作的,当然只能拿到最后一行了
      

  7.   

    同意楼上的观点:strs = str.split(" ");中的str是文件的最后一行,
    而strs没有进行累加,每一次循环strs都进行了重新的赋值,所以得到的就是最后一行的数据