| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 568 人关注过本帖
标题:文件怎么读写的?
只看楼主 加入收藏
伯约
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2006-4-5
收藏
 问题点数:0 回复次数:4 
文件怎么读写的?

以下是源程序代码:
import java.io.*;
public class TestRead {
public static void main(String[] args) {
int[]a={'g','o','o','d','b','y','e',' ','m','y','l','o','v','e'};
int i=0;
File f1=new File("F:/MyJava/RAF.txt");
try
{
RandomAccessFile f=new RandomAccessFile(f1,"rw");
while((i=f.read())!=-1)
{
System.out.print((char)i);
}
System.out.println();
System.out.println(f.getFilePointer());
System.out.println(f.length());
for(i=0;i<a.length;i++)
{
f.write(a[i]);
}
System.out.println(f.getFilePointer());
System.out.println(f.length());
while(f.read()!=-1)System.out.print((char)f.read());
System.out.println();
f.seek(0);
while(f.read()!=-1)System.out.print((char)f.read());
System.out.println(f.length());
}catch(Exception e)
{
System.out.println(e.toString());
}
}
}
F:/MyJava/RAF.txt的文件运行前的内容为:this is a RandomAccessFile example!

程序运行后文件的内容为: this is a RandomAccessFile example!goodbye mylove
程序运行结果为:
this is a RandomAccessFile example!
35
35
49
49

hsi admcesieeapegobemlv?49
Press any key to continue...
最后一行是什么意思牙,看不懂.
谁能告诉程序是怎么运行的? 还有就是read()函数不是读入的一个字节吗?但是你即使是读一个字节它好像是读的一个字符呀?这一点我不懂?

搜索更多相关主题的帖子: 文件 
2006-04-07 15:51
null
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2006-2-3
收藏
得分:0 
while(f.read()!=-1)
System.out.print((char)f.read());

你要明白为什么输出那一行古怪的输出,你就要理解上面的那两行代码是怎么工作的。

当f.read()!=-1 执行以后,指针向下移动了一位, 而在那个输出语句中的 read 函数读了后一个字符,所以就输出那行古怪的输出了。 明白了没有?

read 函数读的是一个 Byte的内容,而一个字符就是一个Byte,没有什么不可以理解的。

1. 坚决抵制日货 2. 批判共产主义,批判所谓的社会主义
2006-04-07 22:00
伯约
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2006-4-5
收藏
得分:0 
while((i=f.read())!=-1) System.out.print((char)i);
while(f.read()!=-1) System.out.print((char)f.read());
这两句有什么不一样吗?前一句就能够按预计输出,可后一句怎么就看不懂了呢?
还有就是好像java语言里面的一个字符不是占两个字节吗?刚好不是一个unicode代码吗?
我还是不明白呀!能说清楚一点吗? 非常感谢!

2006-04-08 09:42
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
以下是引用伯约在2006-4-8 9:42:00的发言:
while((i=f.read())!=-1) System.out.print((char)i);
while(f.read()!=-1) System.out.print((char)f.read());
这两句有什么不一样吗?前一句就能够按预计输出,可后一句怎么就看不懂了呢?
还有就是好像java语言里面的一个字符不是占两个字节吗?刚好不是一个unicode代码吗?
我还是不明白呀!能说清楚一点吗? 非常感谢!

这两句当然不一样,前面那一句,没有漏掉一个字符,把所有的字符都读进来了,
而后来那个
你要看仔细了
当执行while(f.read()!=-1)时,这个f已经读了一个字节了,但是它却没有输出来
然后你就执行System.out.print((char)f.read()),这个时候,f又读了一个字节了,这个时候,已经是第二个字节了
所以你的输出是第2 4 6 8 10 12 。。。。。个字节
到最后的时候,可能执行while(f.read()!=-1),它读出来的不是-1,但是后面执行System.out.print((char)f.read())的时候,它读的就是-1了,但是没有办法,-1也要输了啊,那就输出为?了
所以我建议还是用BufferedReader会好一些


可惜不是你,陪我到最后
2006-04-08 10:18
伯约
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2006-4-5
收藏
得分:0 
哦,明白了!谢谢呀!

2006-04-08 12:39
快速回复:文件怎么读写的?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024449 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved