社区
Java SE
帖子详情
请问java对文件操作中,有没有在文件中插入一些字节,使原数据能后移而不覆盖的方法呀。
xiaofeng3385
2006-02-15 12:17:48
请问java对文件操作中,有没有在文件中插入一些字节,使原数据能后移而不覆盖的方法呀。
...全文
704
18
打赏
收藏
请问java对文件操作中,有没有在文件中插入一些字节,使原数据能后移而不覆盖的方法呀。
请问java对文件操作中,有没有在文件中插入一些字节,使原数据能后移而不覆盖的方法呀。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
khhqy
2006-02-16
打赏
举报
回复
哎,这些我都看不懂....呵呵看看,http://khhqy.Lun123.com 我的创业网!
现向全国招骋,主要工作:上网发发电子邮件,聊天等!
27257674
2006-02-15
打赏
举报
回复
如果你想从第十行开始写
最笨的方法
就是采用READLINE
读十次
就到11行了撒
King_Style
2006-02-15
打赏
举报
回复
这样不就向后移了?
-------------
import java.io.*;
class TestPrint{
public static void main(String args[]){
try{
RandomAccessFile rf=new RandomAccessFile("c:/1.txt","rw");
rf.seek(0);//从文件首开始写入
StringBuffer line=new StringBuffer();
int i=0;
while(i<9){
line.append("\n");
i++;
}
rf.writeBytes(line.toString());
rf.writeBytes("2222222222");
rf.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
King_Style
2006-02-15
打赏
举报
回复
清问下,假如想往文件的第10行写入,怎么找到这行开始写呀,
------------------------
//从当前起隔9行写入
import java.io.*;
class TestPrint{
public static void main(String args[]){
try{
RandomAccessFile rf=new RandomAccessFile("c:/1.txt","rw");
rf.seek(rf.length());
StringBuffer line=new StringBuffer();
int i=0;
while(i<9){
line.append("\n");
i++;
}
rf.writeBytes(line.toString());
rf.writeBytes("111111111");
rf.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
xiaofeng3385
2006-02-15
打赏
举报
回复
回复人: infowain(infowain) ( ) 信誉:100 2006-02-15 09:11:00 得分: 0
1.使用RandomAccessFile
2.要自己把原来的数据向后移。
----------------------------------------
怎么向后移那,这个也是我主要想问的呀
xiaofeng3385
2006-02-15
打赏
举报
回复
blue_afreet(迷茫)
--------------
清问下,假如想往文件的第10行写入,怎么找到这行开始写呀,
blue_afreet
2006-02-15
打赏
举报
回复
FileWriter fw=new FileWriter("FileName", true);
BufferedWriter bw=new BufferedWriter(fw);
bw.write("String");
bw.newLine();
bw.flush();
bw.close();
fw.close();
其中FileName包含了地址和具体的文件名,比如C:/hello.txt;
这段代码可以实现往特定的文本中追加行书写;文本原先的内容不会丢失;也不会介意原文本的内容或行数。
infowain
2006-02-15
打赏
举报
回复
1.使用RandomAccessFile
2.要自己把原来的数据向后移。
blue_afreet
2006-02-15
打赏
举报
回复
晕。好像写错了。第一句代码应该是 : FileWriter fw=new FileWriter("FileName", true);
xiaofeng3385
2006-02-15
打赏
举报
回复
我用RandomAccessFile
文件的特定行写入信息,但写入字节数比原来行的多时会覆盖下一行的数据,
这个能解决么?
xiaofeng3385
2006-02-15
打赏
举报
回复
回复人: nirendao(黑山老猫) ( ) 信誉:100 2006-02-15 08:30:00 得分: 0
当午给出的是在末尾添加,不合楼主的意思啊。
用最原始的方法来做未必就会麻烦,楼主可以考虑把原文件都读出到一个缓存中,然后再做处理。
-----------------------------------------------------
把原文件都读出到一个缓存中,处理后还要全重新写回文件么,那样会很耗时,
blue_afreet
2006-02-15
打赏
举报
回复
FileWriter fw=new FileWriter("FileName", false);
BufferedWriter bw=new BufferedWriter(fw);
bw.write("String");
bw.newLine();
bw.flush();
bw.close();
fw.close();
其中FileName包含了地址和具体的文件名,比如C:/hello.txt;
这段代码可以实现往特定的文本中追加行书写;文本原先的内容不会丢失;
King_Style
2006-02-15
打赏
举报
回复
BufferedWriter out = new BufferedWriter(new FileWriter("text.txt",true));
byte bText[] = new byte[11];
for(int i = 0;i<10;i++)
bText[i] =(byte)i;
out.write(bText);
out.flush();
out.close();
低调的小青蛙
2006-02-15
打赏
举报
回复
"使原数据能后移" 这是不能自动做到的。
对于一般的数据库软件来说,他的记录也采用定长的办法,修改数据都避免产生需要 "后移",而把一些 text 类型的变长型数据放到另外一个单独的区域处理。
执假以为真
2006-02-15
打赏
举报
回复
当午给出的是在末尾添加,不合楼主的意思啊。
用最原始的方法来做未必就会麻烦,楼主可以考虑把原文件都读出到一个缓存中,然后再做处理。
masse
2006-02-15
打赏
举报
回复
try {
File f = new File("filename");
RandomAccessFile raf = new RandomAccessFile(f, "rw");
// Read a character
char ch = raf.readChar();
// Seek to end of file
raf.seek(f.length());
// Append to the end
raf.writeChars("aString");
raf.close();
} catch (IOException e) {
}
低调的小青蛙
2006-02-15
打赏
举报
回复
搂主的想法是,某一行超过原来的内容,后边的自动往后移动。这种想法是没办法实现的,只能自己往后移。
搂主担心,"那样会很耗时"。其实,就算是系统提供这样的功能,那么这个功能用起来一样很耗时。因此,避免超过原来的长度。
前面我提到,对于一般的数据库软件来说,他的记录也采用定长的办法,修改数据都避免产生需要 "后移",而把一些 text 类型的变长型数据放到另外一个单独的区域处理。
xiaofeng3385
2006-02-15
打赏
举报
回复
关键是在于在第10行写数据怎样不会覆盖下行 的数据,
RandomAccessFile 没有writeln类似的方法吧,
用BufferedWriter 好像又找不到行数写
怎么办呀,
java
面试整理(一)—— 小问题总结
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33206732/article/details/80337763 &lt;/div&gt; &lt;div id="content_vie...
面试
java
编译过程,
Java
开发面试过程
中
的问题整理一
一、
Java
基础1、
Java
中
两种
数据
类型(为后面进一步提问做铺垫)(1)基本
数据
类型,分为boolean、byte、int、char、long、short、double、float;(2)引用
数据
类型 ,分为数组、类、接口。扩展:
Java
中
引入了基本
数据
类型,但是为了能够将这些基本
数据
类型当成对象
操作
,
Java
为每一个基本
数据
类型都引入了对应的包装类型(wrapper class),int的包装...
关于
Java
面试过程
中
常见问题的整理(一)
最近遇到了一些mysql的专用术语,然后整理下以备自己及需要的朋友使用 1、
覆盖
索引 回表 2、一级索引 二级索引 3、mysql的mvcc原理 4、mysql的各种锁 行锁 包含 S读锁/共享锁和X写锁/排它锁 S读锁,其他事务可以继续加共享锁,但是不能继续加排他锁 X写锁,一旦加了写锁之后,其他事务就不能加锁了 如何加读锁和写锁 LOCK TABLES tbl_name {READ | WRITE},[ tbl_name {READ | WRITE},…] ......
面试问题整理笔记系列 一
Java
容器类
虚线框表示接口;实线框表示实体类;粗线框表示最常用的实体类;虚线箭头表示实现了这个接口;实现箭头表示类可以制造箭头所指的那个类的对象。 Collection:只允许在每一个位置上放一个对象。它包括“以一定顺序持有一组对象”的List,以及“只能允许添加不重复对象”的set。你可以用a...
Java
面试真题
本题适合一到三年
Java
开发 ,以下问题都是按照原面试官提问记录。
Java SE
62,622
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章