我在一个项目中需要使用C:\WINDOWS\system \drivers\etc这个目录下的hosts文件 并且在该文件的最后加上一个这样的字符串: rsgl_dbserve 由于对Java的文件 *** 作不是很熟练 花了半天的功夫才找到了 具体的实现办法如下:
import java io FileOutputStreamimport java io IOExceptionimport java io OutputStreamWriter
public class FileWriterTest {
public static void main(String[] args) { FileOutputStream stream OutputStreamWriter writer try {
//主要是使用了FileOutputStream的构造函数 FileOutputStream (File file boolean append) //这里参数append为true表示可以添加 详细使用参考JDK帮助文档资料 stream = new FileOutputStream( C:\\WINDOWS\\system \\drivers\\etc\\hosts true)writer = new OutputStreamWriter(stream) writer write( rsgl_dbserve ) writer close() stream close() } catch (IOException e) { e printStackTrace() } }
}
以上代码在eclipse上调试成功!
为了增加代码的重用性 可以编写一个方法如下:
lishixinzhi/Article/program/Java/hx/201311/26427
如果想向某个文件最后添加内容,可使用FileWriter fw = new FileWriter("log.txt",true)在创建FileWriter时加个true就可以了。
下面是详细的示例代码:
File file = new File("D:/Test.txt")File dest = new File("D:/new.txt")
try {
BufferedReader reader = new BufferedReader(new FileReader(file))
BufferedWriter writer = new BufferedWriter(new FileWriter(dest,true))
String line = reader.readLine()
while(line!=null){
writer.write(line)
line = reader.readLine()
}
writer.flush()
reader.close()
writer.close()
} catch (FileNotFoundException e) {
e.printStackTrace()
} catch (IOException e) {
e.printStackTrace()
}
“先读入,再写回”的方法时可行的这个文件有几十兆,不代表整个读入,不是占用几十兆内存。先写入头部的文字,再循环读一点源文件,写一点源文件。
RandomAccessFile 也可以,只是最初要留出空间,比如一些空格
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)