做了一个小时多,,可算得到了我想要的 java 文本文件的追加

晚上弄了一个小时了,,就是没弄明白用JAVA文件的追加…

看到http://wangse.javaeye.com/blog/178457这里的文章,,得到了启发…

我写的是把一个文件夹的所有TXT文件的内容合并..今天做的是针对我白天弄的AWT资料的合并

因为那里的文件也是用JAVA生成的,,所以文件名有规律,,所以可以这么做..

明天再研究研究通用的,,先贴我参考的文章

  1. package velcro.util;   
  2.   
  3. import java.io.File;   
  4. import java.io.FileWriter;   
  5. import java.io.IOException;   
  6.   
  7. /**
  8. * 对文本文件进行读写操作
  9. */  
  10. public class WriteAndReadText {   
  11.     /**
  12.       * 文本文件所在的目录
  13.       */  
  14.     private String textPath;   
  15.     /**
  16.       * 读取文本内容
  17.       * @param textname 文本名称
  18.       * @return
  19.       */  
  20.     public String readText(String textname){   
  21.          File file=new File(textPath+File.separator+textname);   
  22.         try {   
  23.              BufferedReader br = new BufferedReader(new java.io.FileReader(file));   
  24.              StringBuffer sb = new StringBuffer();   
  25.              String line = br.readLine();   
  26.             while (line != null) {   
  27.                  sb.append(line);   
  28.                  line = br.readLine();   
  29.              }   
  30.              br.close();   
  31.             return sb.toString();   
  32.          } catch (IOException e) {   
  33.              LogInfo.error(this.getClass().getName(),e.getLocalizedMessage(),e);   
  34.              e.printStackTrace();   
  35.             return null;   
  36.          }   
  37.      }   
  38.      }   
  39.     /**
  40.       * 将内容写到文本中
  41.       * @param textname 文本名称
  42.       * @param date 写入的内容
  43.       * @return
  44.       */  
  45.     public boolean writeText(String textname,String date){   
  46.         boolean flag=false;   
  47.          File filePath=new File(textPath);   
  48.         if(!filePath.exists()){   
  49.              filePath.mkdirs();   
  50.          }   
  51.         try {   
  52.              FileWriter fw =new FileWriter(textPath+File.separator+textname);   
  53.              fw.write(date);   
  54.              flag=true;   
  55.             if(fw!=null)   
  56.                  fw.close();   
  57.          } catch (IOException e) {   
  58.              LogInfo.error(this.getClass().getName(),e.getMessage(),e);   
  59.              e.printStackTrace();   
  60.          }   
  61.   
  62.         return flag;           
  63.      }   
  64.     /**
  65.       * 在文档后附加内容
  66.       * @param textName
  67.       * @param date
  68.       * @return
  69.       */  
  70.     public boolean appendText(String textName,String date){   
  71.         boolean flag=false;   
  72.          File filePath=new File(textPath);   
  73.         if(!filePath.exists()){   
  74.              filePath.mkdirs();   
  75.          }   
  76.         try {   
  77.              FileWriter fw =new FileWriter(textPath+File.separator+textName,true);   
  78.              fw.append(date);   
  79.              flag=true;   
  80.             if(fw!=null)   
  81.                  fw.close();   
  82.          } catch (IOException e) {   
  83.              LogInfo.error(this.getClass().getName(),e.fillInStackTrace().toString());   
  84.              e.printStackTrace();   
  85.          }   
  86.         return flag;       
  87.      }   
  88.     public String getTextPath() {   
  89.         return textPath;   
  90.      }   
  91.     public void setTextPath(String textPath) {   
  92.         this.textPath = textPath;   
  93.      }   
  94. }  

package velcro.util;import java.io.File;import java.io.FileWriter;import java.io.IOException;/** * 对文本文件进行读写操作 */public class WriteAndReadText { /** * 文本文件所在的目录 */ private String textPath; /** * 读取文本内容 * @param textname 文本名称 * @return */ public String readText(String textname){ File file=new File(textPath+File.separator+textname); try { BufferedReader br = new BufferedReader(new java.io.FileReader(file)); StringBuffer sb = new StringBuffer(); String line = br.readLine(); while (line != null) { sb.append(line); line = br.readLine(); } br.close(); return sb.toString(); } catch (IOException e) { LogInfo.error(this.getClass().getName(),e.getLocalizedMessage(),e); e.printStackTrace(); return null; } } } /** * 将内容写到文本中 * @param textname 文本名称 * @param date 写入的内容 * @return */ public boolean writeText(String textname,String date){ boolean flag=false; File filePath=new File(textPath); if(!filePath.exists()){ filePath.mkdirs(); } try { FileWriter fw =new FileWriter(textPath+File.separator+textname); fw.write(date); flag=true; if(fw!=null) fw.close(); } catch (IOException e) { LogInfo.error(this.getClass().getName(),e.getMessage(),e); e.printStackTrace(); } return flag; } /** * 在文档后附加内容 * @param textName * @param date * @return */ public boolean appendText(String textName,String date){ boolean flag=false; File filePath=new File(textPath); if(!filePath.exists()){ filePath.mkdirs(); } try { FileWriter fw =new FileWriter(textPath+File.separator+textName,true); fw.append(date); flag=true; if(fw!=null) fw.close(); } catch (IOException e) { LogInfo.error(this.getClass().getName(),e.fillInStackTrace().toString()); e.printStackTrace(); } return flag; } public String getTextPath() { return textPath; } public void setTextPath(String textPath) { this.textPath = textPath; }}

PrintWriter out = new PrintWriter(new FileWriter(logFileName, true), true);
Java读写文件最常用的类是FileInputStream/FileOutputStream和FileReader/FileWriter。
其中FileInputStream和FileOutputStream是基于字节流的,常用于读写二进制文件。
读写字符文件建议使用基于字符的FileReader和FileWriter,省去了字节与字符之间的转换。
但这两个类的构造函数默认使用系统的编码方式,如果文件内容与系统编码方式不一致,可能会出现乱码。
在这种情况下,建议使用FileReader和FileWriter的父类:InputStreamReader/OutputStreamWriter,
它们也是基于字符的,但在构造函数中可以指定编码类型:InputStreamReader(InputStream in, Charset cs) 和OutputStreamWriter(OutputStream out, Charset cs)。

// 读写文件的编码:
InputStreamReader r = new InputStreamReader(new FileInputStream(fileName), “utf-8″);
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(fileName),”utf-8″);

下面帖我自己写的,,仅供参考

package io;
import java.io.*;
public class UnionFile {

public static void main(String[] args){
try{
   File f=new File("e:\all.txt");
   if(f.exists())
    System.out.println("文件已经存在");
   if(f.createNewFile())
    System.out.println("文件创建成功!");
   else
    System.out.println("文件创建失败!");
   for(int i=1;i<26;i++)
   {
    String filename=new String("D:\java\java文章");
    if(i<10)
     filename+="0"+i;
    else
     filename+=""+i;
    if(i==6||i==25){
     String other=filename;
     other+="_1.txt";
     filename+=".txt";
     writed(filename,f);
     writed(other,f);    
     }
    else if(i==9||i==10){
     String other=filename;
     String other1=filename;
     other+="_1.txt";
     other1+="_2.txt";
     filename+=".txt";
     writed(filename,f);
     writed(other,f);
     writed(other1,f);
    }
    else{
     filename+=".txt";
     writed(filename,f);
    }
   }   
}catch(IOException e){
   e.printStackTrace();
}
}

public static void writed(String in,File f){
   try{
   BufferedReader input=new BufferedReader(new FileReader(in));
   BufferedWriter out=new BufferedWriter(new FileWriter(f,true));//就是差在这里的true,,早该查API的,,
   //RandomAccessFile input = new RandomAccessFile(in,"r");
   //RandomAccessFile out = new RandomAccessFile(f,"rw");
   //FileWriter out = new FileWriter(f,true);
   String con=null;
   while((con=input.readLine())!=null)
    {
    out.append(con);
    //out.write(con);
    //out.writeChars(con);
    //out.writeUTF(con);
    //System.out.println(con);
    out.newLine();
   
    }
    input.close();
    out.close();
   }catch(IOException ioe){
    ioe.printStackTrace();
   }
}
   

}

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>