Topic: 请教,如何在一个文本中插入一个新行(空或不空)?

  Print this page

1.请教,如何在一个文本中插入一个新行(空或不空)? Copy to clipboard
Posted by: Kisher
Posted on: 2003-10-22 22:24

我尝试RandomAccessFile.writeBytes(String+"\n");以"\n"进行换行,结果输出在一个txt文本里,用记事本打开后换行标志变成了一个”■”(好像文本不认这种换行?)
另外,如果想在已有非空的文本中某个位置插入一行新内容,应该怎么做?

谢谢!

2.Re:请教,如何在一个文本中插入一个新行(空或不空)? [Re: Kisher] Copy to clipboard
Posted by: jameszhang
Posted on: 2003-10-23 10:12

加空格行不?

3.Re:请教,如何在一个文本中插入一个新行(空或不空)? [Re: Kisher] Copy to clipboard
Posted by: 笨耗子
Posted on: 2003-10-23 10:34

记事本是有那个烂毛病的,用写字版打开就没问题。但那个符号读入到其他地方(比如读入到FLASH中)还是可以显示为换行的

4.Re:请教,如何在一个文本中插入一个新行(空或不空)? [Re: Kisher] Copy to clipboard
Posted by: dog72
Posted on: 2003-10-23 11:55

换行符是Java提供的,不要写hardcode

5.Re:请教,如何在一个文本中插入一个新行(空或不空)? [Re: Kisher] Copy to clipboard
Posted by: Kisher
Posted on: 2003-10-23 14:21

Java提供的换行符是什么?

6.Re:请教,如何在一个文本中插入一个新行(空或不空)? [Re: jameszhang] Copy to clipboard
Posted by: Kisher
Posted on: 2003-10-23 14:22

jameszhang wrote:
加空格行不?


??
不明白~~~~~~~

7.Re:请教,如何在一个文本中插入一个新行(空或不空)? [Re: Kisher] Copy to clipboard
Posted by: fastray
Posted on: 2003-10-23 15:29

文本不认这种换行,试试asc码吧

8.Re:请教,如何在一个文本中插入一个新行(空或不空)? [Re: Kisher] Copy to clipboard
Posted by: dog72
Posted on: 2003-10-23 15:53

Kisher wrote:
Java提供的换行符是什么?

好像是java.io.LineSeparatorFilter,不过记不清是不是1.4的。另外,用RandomAccessFile有很多问题要自己搞定,不如用PrintWriter来的方便。一定要用的话,关于LineSeparator你可以自己定义常量:
WINDOW="\r\n"
UNIX="\n"

9.Re:请教,如何在一个文本中插入一个新行(空或不空)? [Re: dog72] Copy to clipboard
Posted by: Kisher
Posted on: 2003-10-23 18:02

dog72 wrote:
好像是java.io.LineSeparatorFilter,不过记不清是不是1.4的。另外,用RandomAccessFile有很多问题要自己搞定,不如用PrintWriter来的方便。一定要用的话,关于LineSeparator你可以自己定义常量:
WINDOW="\r\n"
UNIX="\n"


哦,原来平台有差异,难怪我用“\n”不行呢,加上“\n”后就可以换行了。谢谢dog72 :)
可是换行后,如果是在文件头部写入,则原来文件的全部内容都被写入的东西代替了,如果在文件中间写入,后面的内容又都被写入的内容代替了,怎么能够实现“insert”呢,我原以为只要newline就可以了。。。

我在java.io.*里面找来找去发现大部分操作Stream的类不是Input、Out就是Reader、Writer,只有RandomAccessFile能够既In又Out,因为我想在文件中对write进行定位,所以要先“In”再“Out”。
而且,我试了各种write,发现只有writeBytes可以在文件中写入含有中文的String,其他的各种write、print写入后都是问号。

我刚接触Java,对SDK的类库很不熟悉,大家不要见笑:)

10.Re:请教,如何在一个文本中插入一个新行(空或不空)? [Re: Kisher] Copy to clipboard
Posted by: Kisher
Posted on: 2003-10-23 18:06

我把我的问题说的再详细点,希望dog72和其他能够明白我的意图的朋友帮忙想想办法,先严重感谢:)

假设result.txt是我想要操作的文本文件,内容如下:
================
Unicode测试代码
2
3
4
5
================
现在假设我想在“3”的那一行的后面插入一行文字“insert的文本行”

感谢!

11.Re:请教,如何在一个文本中插入一个新行(空或不空)? [Re: Kisher] Copy to clipboard
Posted by: dog72
Posted on: 2003-10-23 21:13

插入RandomAccess是不行的,它只能覆盖。你的需求可以如下解决:
由FileReader读,用PrintWriter写临时文件,然后改名。基本上就是倒腾一遍文件,在需要的地方写要插入的文本就可以了。

12.Re:请教,如何在一个文本中插入一个新行(空或不空)? [Re: Kisher] Copy to clipboard
Posted by: Kisher
Posted on: 2003-10-24 10:15

可是,PrintWriter能够正确地写入中文吗?

13.Re:请教,如何在一个文本中插入一个新行(空或不空)? [Re: Kisher] Copy to clipboard
Posted by: dog72
Posted on: 2003-10-24 10:49

Kisher wrote:
可是,PrintWriter能够正确地写入中文吗?

可以,reader/writer是Java专门处理字符的(Steam是处理byte的)。FileWriter使用缺省的encoding。例子:
new PrintWriter(new FileWriter("abc.txt"));

14.Re:请教,如何在一个文本中插入一个新行(空或不空)? [Re: Kisher] Copy to clipboard
Posted by: Kisher
Posted on: 2003-10-24 14:34

To: dog72

发现个很奇怪的现象,如果:
PrintWriter.println("测试"); //
可以正确输出到一个.txt中
但如果:
String str=new String("测试");
PrintWriter.println(str);
就会写入一堆问号?

15.Re:请教,如何在一个文本中插入一个新行(空或不空)? [Re: dog72] Copy to clipboard
Posted by: Kisher
Posted on: 2003-10-24 15:29

dog72 wrote:
插入RandomAccess是不行的,它只能覆盖。你的需求可以如下解决:
由FileReader读,用PrintWriter写临时文件,然后改名。基本上就是倒腾一遍文件,在需要的地方写要插入的文本就可以了。

看来只有用这个办法了,不过FileReader直接从InputStreamReader继承而来,一个方法都没有重写,read还是base on single character。我觉得还是用RandomAccessFile.readLine()好了

谢谢dog72 :)


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923