好不容易摸爬滚打到API的RandomAccessFIle又迷糊了,真的是万不得已不会来这里麻烦大家
现在知道它能用来读写文件,(Java提供了一个可以对文件随机访问的操作,访问包括读和写操作。该类名为RandomAccessFile。该类的读写是基于指针的操作。)
那小白的问题来了实在搞不懂才来这里发问,可能幼稚了点大神别介意
1.write(intd)方法是写入,比如在一个txt文件写入一个字节1可为啥去硬盘的txt文件查看却是空的呢?
那么这个写入是写到哪了?为何可以读到?却在硬盘txt文件找不到呢?
假设写入十进制23和十六进制17结果一样吧(我做了测试是一样的只是想和师傅们确认是不是这样的)?

希望师傅们说的易懂些
@Test[/color]
publicvoidtestWrite()throwsException{
RandomAccessFileraf=newRandomAccessFile("D:/test.txt","rw");
//写出一个字节,写的是int值的低8位
raf.write(1);
raf.close();
}
/**
*测试读取方法
*/
@Test
publicvoidtestRead()throwsException{
RandomAccessFileraf=newRandomAccessFile("D:/test.txt","r");
//读取一个字节
intd=raf.read();
System.out.println(d);
raf.close();
}


2.write(byte[]d)怎么就可以写入字符串了呢?而且硬盘找得到并且打开txt文件显示出写入的内容
@Test
publicvoidtestWriteByteArray()throwsException{
RandomAccessFileraf=newRandomAccessFile("raf.dat","rw");
//将字符串按照默认编码转换为字节
byte[]buf="HelloWorld".getBytes();
//将字节数组中所有字节一次性写出
raf.write(buf);
raf.close();
}
/**
*测试批量读取
*
*@throwsException
*/
@Test
publicvoidtestReadByteArray()throwsException{
RandomAccessFileraf=newRandomAccessFile("raf.dat","r");
//创建长度为10的字节数组
byte[]buf=newbyte[10];
//尝试读取10个字节存入数组,返回值为读取的字节量
intlen=raf.read(buf);
System.out.println("读取到了:"+len+"个字节");
System.out.println(newString(buf));
raf.close();

3上面两种方法写入的区别是写入字节和字符串?还是有其他区别?
问的超前一点(想了解下)假如写入其它类型的文件比如图片视频文件什么的可以写入么?也是此方法?大概如何写入?

1 个解决方案

#1


数据已经写入文件了,你用read时,是可以读出来你写的数据啊,怎么会说没写入呢。
估计你是直接用文本编辑器用肉眼看吧,注意了你写入文件的数据是“字节”。文本编辑器是有编码设置的(即该文本编译器要采用什么编码去解析出你的文件给你看),一般编辑器默认都是ascii
,如你写入值为1,实际用ascii码解析出来就表示一个标题开始标记(SOH,肉眼看到的只有空白)。有些编辑器解析出来看到的就是空白,就让你误以为没写入了。
你写入hello那么字符,是因为刚好可以解析出来,当然就能看到。
楼主你可以试下写入97试下,97表示的ascii码是a字符。关于编码这块内容,简单一句话,数据永远只是字节,这些字节数据可以用一些规则来解析出不同的东西。
即字节数据因规则不同可以幻化出各种事物。比如97可以规定是代表a字符,也可以规定是某某指令,也可以规定是某视频流的一部分。也可以表示某某电信号,
具体都根据一些规则去解析处理。建立楼主可以网上了解编码的相关知识。

更多相关文章

  1. Java逐行读写TXT文件
  2. 帮忙解析一下 java解析普通的文本文件,提取信息到execl文件中
  3. 如何从java获取spring配置文件名称
  4. [疯狂Java]NIO.2:walkFileTree、FileVisitor(遍历文件/目录)
  5. Java的Web项目中Web.xml配置文件元素详解
  6. Java 字节流与字符流的总结和理解
  7. Java操作ini文件 ,解决properties文件中无法读取换行及空格
  8. java基础IO删除文件夹文件
  9. java 导出excel 格式与文件扩展名指定的格式不一样

随机推荐

  1. Android : 继承BaseAdapter对ListView进
  2. 强制系统横屏竖屏
  3. Android: 下载并编译Android Source Tree
  4. iPhone与Android对比
  5. 2011.08.30——— android setOnTouchLis
  6. android 程序日志记录
  7. android - 制作底部选项卡TabHost
  8. Android Service 示例
  9. Android 蓝牙2.0工具类
  10. notify while network is available or n