高手,您好:
    我弄了一个“添加一个字符串到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 IOJava 调试Java写入文件Java SE

解决方案 »

  1.   

    writeDatatoFiletail方法中并没有添加"\r\n"当然不能换行了。
      

  2.   

    那请问三位哥哥:
        我的write()方法中写了“\r\n”,他不能换行的原因,是什么缘故造成的呢...?
      

  3.   

    这边不清楚你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
      

  4.   

    你的write()方法是没问题的,可以换行的,只不过构造FileWriter时要记得加true
    另外你的测试方法中最终页没有调用write方法啊
    你在writeDatatoFiletail方法中调用的都是BufferedWriter的write方法,是没有换行处理的