我想问的是我对一个文件进行修改操作的时候,实际上我是先把文件全部读出,然后对读出内容修改,然后在重新写入文件。我想知道有没有其他方法来操作。
解决方案 »
- 两数相除,如何得到两个小数??
- [求助]当使用高级流封装了低级流,低级流自动关闭吗?
- FTP空间问题
- 高手留步!!!在linux中java如何获得MAC Address
- 求助:各位前辈,高手们,怎样将JAVA工程生成一个可执行文件(.exe)呢?
- 关于 break 标签问题!!!
- 请问我安装JBuilder9后,Tomcat是否已安装,为什么http://localhost:8080没有欢迎界面
- java 对oracle 表监控问题
- 请问有好的下载java源代码的网站吗?
- Driver,DriverManager生成connection的区别?throw,throws的区别?
- 关于KeyListener接口的问题
- 求助
System.out.println(file.getAbsolutePath());
RandomAccessFile random = new RandomAccessFile(file, "rw");
random.seek(10); //移动文件指针到的第10个字节
random.writeUTF("QQQQQQQQQQQ");
random.close();
所谓其他操作其实也是这样的,只是感觉上似乎有点不同而已
FOR EXAMPLE
RandomAccessFile这个类可以定位修改文件
File file = new File("FILE.TXT");
RandomAccessFile random = new RandomAccessFile(file, "rw");
random.seek(10); //移动文件指针到的第10个字节
random.writeUTF("SDAF");
random.close();
也是全部读入再操作的,或者选择追加文本修改方式
我想把22修改成RR,怎么能在不使用 读出----修改----写入的方式 做到。
下面是我的代码片断
/******
* 写入数据
*
*/
public boolean InsertData(String[] strs) {
if (!ReadTableInfo())
return false;
// 获得输入流
try {
RandomAccessFile raf = new RandomAccessFile(file, "rwd");
StringBuffer str = new StringBuffer(); for (int i = 0; i < strs.length; i++) {
str.append(strs[i] + "::");
}
str.append("\n");
raf.seek(raf.length());
raf.writeBytes(str.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return true;
}
"rw" 什么意思
-------------------------------------
"r" 以只读方式打开。调用结果对象的任何 write 方法都将导致抛出 IOException。
"rw" 打开以便读取和写入。如果该文件尚不存在,则尝试创建该文件。
"rws" 打开以便读取和写入,对于 "rw",还要求对文件的内容或元数据的每个更新都同步写入到基础存储设备。
"rwd" 打开以便读取和写入,对于 "rw",还要求对文件内容的每个更新都同步写入到基础存储设备。