当前位置:编程学习 > JAVA >>

求高手点拨一个“方法中的异常”处理方法...

高手,您好:
    我弄了一个“添加一个字符串到txt文件”的功能类..
    类文件如下:
    
package d_port_package;

import java.io.BufferedWriter;   
import java.io.FileNotFoundException;   
import java.io.FileWriter;   
import java.io.IOException;   
import java.util.ArrayList;   
import java.util.List;   
   
public  class WriteTxt{   
    
       public static void write(String filePath){   
                
             try {   
                  FileWriter output = new FileWriter(filePath);   
                  BufferedWriter  bf= new BufferedWriter(output);   
                   for(String l:ReadTxt.logData ){   
                        bf.write(l+ "\r\n");   
                  }   
            bf.flush();
            } catch (FileNotFoundException e) {   
                  e.printStackTrace();   
            } catch (IOException e) {   
                   // TODO Auto-generated catch block   
                  e.printStackTrace();   
            }   
               
      }
       
       public static void writeDatatoFiletail(ArrayList<String> Data,String filePath){
        FileWriter output = null;
try {
output = new FileWriter(filePath,true);  
int len = Data.size();
for(int i = 0;i<len;i++){
BufferedWriter  bf= new BufferedWriter(output);   
bf.write(Data.get(i));     
bf.flush(); 
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();

       }
       
       public static void writeDatatoFiletail(String Data,String filePath){
        FileWriter output = null;
try {
output = new FileWriter(filePath,true);  
BufferedWriter  bf= new BufferedWriter(output);   
bf.write(Data);     
bf.flush(); 
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();

       }
       
}

    经过我的测试类文件:
    
package d_port_package;

public class Test {
static String MyUID = "cjco";
    static String MyID = "CJCO";
static String BeiJingMemUIDPath = "D:\\MyDoc\\Dport\\BeiJing\\SysMemIndexbak.txt";
public Test(){

}
public static void main(String[] args){ 
ReadTxt.logData.add(MyUID);
WriteTxt.writeDatatoFiletail(ReadTxt.logData.get(0), BeiJingMemUIDPath);
        ReadTxt.logData.add(MyID);
        WriteTxt.writeDatatoFiletail(ReadTxt.logData.get(1), BeiJingMemUIDPath);
}
}
 
    测试文件的内容,在进行代码的运行之前为:
    
    运行玩我的代码后,得到的本txt测试文件中的内容为:
    
    请问高手:
    我弄的这个“writeTxt类”中的write()方法,他的第18行代码中的“\r\n”就是我想要起到“换行”效果的代码..
    “writeTxt类”中的“writeDatatoFiletail()”方法,他的每一句数据向文件中的书写,是借助了“BufferedWriter”这个自己的“write()”方法“相当于System.out.println()”的具有“自动换行效果”的写出语句进行的“向txt测试文件书写”的代码实现的...
    但是这个时候,我得到的结果,却是图二中的“两个新的写入数据”,
    “都没有得到换行效果”的结果...
    请求高手点拨:
    怎样修改,能够得到弟我预期的两个方法的写出,全部能够将新数据换行,的效果...?
    一百分奉上!!
                                                                一位日日夜夜向着理想奔跑的筑梦者
                                                               2013年9月22日早晨6点50分 Java IO Java 调试 Java写入文件 Java SE --------------------编程问答-------------------- BufferedWriter使用newLine换行。 --------------------编程问答-------------------- writeDatatoFiletail方法中并没有添加"\r\n"当然不能换行了。 --------------------编程问答--------------------
引用 2 楼 ghostkngiht 的回复:
writeDatatoFiletail方法中并没有添加"\r\n"当然不能换行了。

感觉是这个原因。 --------------------编程问答-------------------- 那请问三位哥哥:
    我的write()方法中写了“\r\n”,他不能换行的原因,是什么缘故造成的呢...? --------------------编程问答-------------------- 这边不清楚你ReadTxt干了什么,但是试了下分隔符是可以用的,不过建议使用系统自带的行分隔符方式:
public class Test
{

    static String MyUID = "cjco";

    static String MyID = "CJCO";

    static String BeiJingMemUIDPath = "D:\\work\\SysMemIndexbak.txt";

    public Test()
    {

    }

    public static void main(String[] args)
    {
        List<String> myList = new ArrayList<String>();
        myList.add(MyUID);
        getStrsList(myList);
        myList.add(MyID);
        System.out.println("myList :"+myList);
        try
        {
            FileWriter output = new FileWriter(BeiJingMemUIDPath);
            BufferedWriter bf = new BufferedWriter(output);

            for (String l : myList)
            {
                bf.write(l + System.getProperty("line.separator"));//建议使用换行的系统分隔符
            }
            bf.flush();
        }
        catch (FileNotFoundException e)
        {
            e.printStackTrace();
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block   
            e.printStackTrace();
        }
    }

    //将文件内容先读取出来放到list中
    private static void getStrsList(List<String> myList)
    {
        FileReader reader = null;
        BufferedReader br = null;
        try
        {
            reader = new FileReader(BeiJingMemUIDPath);
            br = new BufferedReader(reader);
            String temp;
            while(null != (temp = br.readLine()))
            {
                myList.add(temp);
            }
        }
        catch (FileNotFoundException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally
        {
            if(null != br)
            {
                try
                {
                    br.close();
                }
                catch (IOException e)
                {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            
            if(null != reader)
            {
                try
                {
                    reader.close();
                }
                catch (IOException e)
                {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
}

运行结果,那个txt内容原来为199的,变成:
cjco
199
CJCO

--------------------编程问答-------------------- 想精确控制还是用字节流比较方便

不会出现这些让人觉得不可理解的问题 --------------------编程问答-------------------- 你的write()方法是没问题的,可以换行的,只不过构造FileWriter时要记得加true
另外你的测试方法中最终页没有调用write方法啊
你在writeDatatoFiletail方法中调用的都是BufferedWriter的write方法,是没有换行处理的
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,