大家好,问题具体是这样的:
有一个student.txt,里面有五行数据,我10分钟去访问下数据库,如果数据库有新的数据产生,那么将新的数据写入到student.txt文件的最后一行。请问有什么思路?
网友写到:先提取student.txt文件的数据放入一个数组,然后将数据库新的数据放入数组的最后一个位子,然后删除student.txt文件,然后再重新创建student.txt,将数组的数据写入文件中!这个可行的。有没有更好的方法或者有更好的JAVA自带的方法函数等。谢谢
//将内容追加到文件尾部
import java.io.FileWriter;
import java.io.IOException;
import java.io.RandomAccessFile;
/**
* 将内容追加到文件尾部
*/
public class AppendToFile {
/**
* A方法追加文件:使用RandomAccessFile
* @param fileName 文件名
* @param content 追加的内容
*/
public static void appendMethodA(String fileName, String content){
try {
// 打开一个随机访问文件流,按读写方式
RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");
// 文件长度,字节数
long fileLength = randomFile.length();
//将写文件指针移到文件尾。
randomFile.seek(fileLength);
randomFile.writeBytes(content);
randomFile.close();
} catch (IOException e){
e.printStackTrace();
}
}
/**
* B方法追加文件:使用FileWriter
* @param fileName
* @param content
*/
public static void appendMethodB(String fileName, String content){
try {
//打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件
FileWriter writer = new FileWriter(fileName, true);
writer.write(content);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
String fileName = "C:/temp/newTemp.txt";
String content = "new append!";
//按方法A追加文件
AppendToFile.appendMethodA(fileName, content);
AppendToFile.appendMethodA(fileName, "append end. ");
//显示文件内容
ReadFromFile.readFileByLines(fileName);
//按方法B追加文件
AppendToFile.appendMethodB(fileName, content);
AppendToFile.appendMethodB(fileName, "append end. ");
//显示文件内容
ReadFromFile.readFileByLines(fileName);
}
}
本篇文章来源于:开发学院 http://edu.codepub.com 原文链接:http://edu.codepub.com/2010/0323/21269_2.php
import java.io.FileWriter;
import java.io.IOException;
import java.io.RandomAccessFile;
/**
* 将内容追加到文件尾部
*/
public class AppendToFile {
/**
* A方法追加文件:使用RandomAccessFile
* @param fileName 文件名
* @param content 追加的内容
*/
public static void appendMethodA(String fileName, String content){
try {
// 打开一个随机访问文件流,按读写方式
RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");
// 文件长度,字节数
long fileLength = randomFile.length();
//将写文件指针移到文件尾。
randomFile.seek(fileLength);
randomFile.writeBytes(content);
randomFile.close();
} catch (IOException e){
e.printStackTrace();
}
}
/**
* B方法追加文件:使用FileWriter
* @param fileName
* @param content
*/
public static void appendMethodB(String fileName, String content){
try {
//打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件
FileWriter writer = new FileWriter(fileName, true);
writer.write(content);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
String fileName = "C:/temp/newTemp.txt";
String content = "new append!";
//按方法A追加文件
AppendToFile.appendMethodA(fileName, content);
AppendToFile.appendMethodA(fileName, "append end. ");
//显示文件内容
ReadFromFile.readFileByLines(fileName);
//按方法B追加文件
AppendToFile.appendMethodB(fileName, content);
AppendToFile.appendMethodB(fileName, "append end. ");
//显示文件内容
ReadFromFile.readFileByLines(fileName);
}
}
本篇文章来源于:开发学院 http://edu.codepub.com 原文链接:http://edu.codepub.com/2010/0323/21269_2.php
温馨提示:答案为网友推荐,仅供参考
第1个回答 2011-06-18
RandomAccessFile类的seek()方法可以定位读取或写入文件的指针位置,你只需每次在有新数据写入文件之前将指针定位到student.txt的末尾即可,比如
RandomAccessFile out = new RandomAccessFile("student.txt"),"rw");
out.seek(FILE_LENGTH);//FILE_LENGTH为文件长度
这时就定位到了student.txt的末尾,再进行写入操作就能够将新的数据添加到student.txt文件的最后了
RandomAccessFile out = new RandomAccessFile("student.txt"),"rw");
out.seek(FILE_LENGTH);//FILE_LENGTH为文件长度
这时就定位到了student.txt的末尾,再进行写入操作就能够将新的数据添加到student.txt文件的最后了
第2个回答 2011-06-17
java中对于文件流写的时候,FileOutputStream.write(b, off, len)是有这个函数的,可以直接往文本的最后写。
第3个回答 2011-06-18
= =!lz你每插入一条数据,尾端加个换行符 /n就行