请问如何在指定的位置写数据 FileWriter
现在做一个实事Log文件,
希望在不同的时候时候,向一个文件里写数据。
问题是现在只能写一行,望高人看看我的代码。
fileWrite.write(strOneLine,nLogSize,nOneLineSize);//nLogSize `现有文件的行
//strOneLine `log 信息,如启动,退出 try{
java.io.FileWriter fileWrite = new java.io.FileWriter(strLogFileName);

String strOneLine = strTime + strLogInfo;
strOneLine = strOneLine + "\n";
if(nLogSize == 0){
fileWrite.write(strOneLine);
}else{
int nOneLineSize = strOneLine.length();
fileWrite.write(strOneLine,nLogSize,nOneLineSize);
}

fileWrite.close();
}catch(IOException eIO){
eIO.printStackTrace();
}catch(Exception eE){
eE.printStackTrace();
}

解决方案 »

  1.   

    追加一个问题,如何实现,在读文件时,如果指定的文件不存在,自动新建建立一个文件?java.io.FileReader fileRead = new java.io.FileReader(strLogFileName);
    java.io.BufferedReader br = new java.io.BufferedReader(fileRead);            strLogFileName `=c:\aaa.log
    下面怎么写?判断?
    java.io.FileWriter fileWrite = new java.io.FileWriter(strLogFileName);
      

  2.   

    你不就是想在log文件里追加内容吗
    FileWriter fw=null;
    try{
    fw=new FileWriter("e:\\a.txt",true);
    fw.write("aaaaaaaaaaa");
    fw.flush();
    }catch(Exception e){
    }finally{
    if(fw!=null){
    try{fw.close();}catch(Exception e){}
    }
    }
    这样就可以了
      

  3.   

    请问如何在指定的位置写数据
    用RandomAccessFile实现
    在网上帮你搜了个小例子
    import java.io.IOException; 
    import java.io.RandomAccessFile; public class RandomAccessFileTest { 
    public RandomAccessFileTest() { 
    try { 
    RandomAccessFile dos = new RandomAccessFile("tmp1", "rw"); 
    dos.writeInt(1); 
    dos.seek(0); 
    System.out.println(dos.readInt()); 
    } catch (IOException e) { 
    e.printStackTrace(); 

    } public static void main(String xx[]) { 
    new RandomAccessFileTest(); 

    }
      

  4.   


    好像不行啊,
    我要这样使用,在各地不同的地方,打开文件,追加信息。
    public static void main(String[] args) {
    System.out.println("The Program is started");
    MakeLog("Program Started");
    /*****************************************/
    MakeLog("Program end。");
    }public static void MakeLog(String strLogInfo){     String sourcefile="C:/test.log"; int nLogSize = 0;
       try {            
    java.io.FileReader fileRead = new java.io.FileReader(sourcefile);
    java.io.BufferedReader br = new java.io.BufferedReader(fileRead);
                String strOneline;             
                while ((strOneline = br.readLine()) != null) {
                    nLogSize++;
                }
                
                br.close();
                fileRead.close(); 
       }catch(Exception eE){
    eE.printStackTrace();
       } java.io.FileWriter fileWrite= null;
    try{
    fileWrite = new java.io.FileWriter(sourcefile);

    String strOneLine = strTime + strLogInfo;
    strOneLine = strOneLine + "\n";
    if(nLogSize == 0){
    fileWrite.write(strOneLine);
    }else{
    int nOneLineSize = strOneLine.length();
    fileWrite.write(strOneLine,nLogSize,nOneLineSize);
    }

    //fileWrite.close();
    fileWrite.flush();
    }catch(Exception eE){
    eE.printStackTrace();
    }finally{
    try{
    fileWrite.close();
    }catch(Exception e){
    e.printStackTrace();
    }

    }
    }
      

  5.   

    java.io.FileReader fileRead = new java.io.FileReader(sourcefile, true);这样就是以添加方式打开啊
      

  6.   


    各位高人,读文件的问题已解决了现在是写文件。java.lang.StringIndexOutOfBoundsException: String index out of range: 118只想问下面的问题,第二个参数什么意思?从现在位置到开始位子的缓存吗?fileWrite.write(strOneLine,nLogSize,nOneLineSize);以下为SDK帮组文件
    http://java.sun.com/j2se/1.5.0/docs/api/java/io/Writer.html#write(char[])
    public void write(String str,
                      int off,
                      int len)
               throws IOExceptionWrite a portion of a string. Parameters:
    str - A String
    off - Offset from which to start writing characters
    len - Number of characters to write 
    Throws: 
    IOException - If an I/O error occurs
      

  7.   

    参数的意思是,往fileWriter中写入     str中的第off个字符开始,共len个字符