说说二进制I/O的疑问 二进制I/O这一章在讲随机访问文件时(RandomFileStream)通过和其他流的对比来说明它的优点的:“到现在为止,所使用的数据流都是只读的或者只写的。这些数据流的外部文件都是顺序文件,如果不创建新文件就不能更新它们。”为什么不创建新文件就不能更新它们呀。求大神给个例子超度超度我。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 其实我也没遇到过这个问题,就是对这句话不是很理解,感觉我也可以不创建一个文件就更新FileOutputStream和FileInputStream呀,比方说下面代码:import java.io.*;public class TestFileStream { public static void main(String[] args){ int[] a= new int[10]; try{ FileInputStream input = new FileInputStream("test.dat"); FileOutputStream output = new FileOutputStream("test.dat"); for(int i=0;i<10;i++){ output.write(i); } output.close(); int value; while((value=input.read())!=-1){ System.out.println(value); } input.close(); }catch(IOException ex){ ex.printStackTrace(); } }}如果是用RandomAccessFile的话应该这么写:import java.io.*;public class IO { public void main(String[] args){ int[] a= new int[10]; try{ RandomAccessFile file = new RandomAccessFile("test.dat","rw"); for(int i=0;i<10;i++){ file.write(i); } int value; file.seek(0); while((value=file.read())!=-1){ System.out.println(value); } file.close(); }catch(IOException ex){ ex.printStackTrace(); } } }看不出有什么区别 import java.io.*; public class TestFileStream { public static void main(String[] args){ int[] a= new int[10]; try{ FileInputStream input = new FileInputStream("test.dat"); FileOutputStream output = new FileOutputStream("test.dat"); for(int i=0;i<10;i++){ output.write(i); } output.close(); int value; while((value=input.read())!=-1){ System.out.println(value); } input.close(); }catch(IOException ex){ ex.printStackTrace(); } } } import java.io.*; public class IO { public void main(String[] args){ int[] a= new int[10]; try{ RandomAccessFile file = new RandomAccessFile("test.dat","rw"); for(int i=0;i<10;i++){ file.write(i); } int value; file.seek(0); while((value=file.read())!=-1){ System.out.println(value); } file.close(); }catch(IOException ex){ ex.printStackTrace(); } } } 楼主,我手头资料没有你的那句话,但是我手头学习资料有这么一句话“RandomFileStream类提供了一个文件指针,用来标识要进行读写操作的下一数据的位置”我自己对这句抽象的话理解是参照链式表,可以随时打断指向重新建立。底层实现,猜想类似arraylist和linkedlist区别。不一定对,我也刚学习到这块。 RandomAccess可以参阅FileInputStream的源码:public FileInputStream(String name) throws FileNotFoundException { this(name != null ? new File(name) : null); }实际上还是new 了File的。 可以参阅FileInputStream的源码:public FileInputStream(String name) throws FileNotFoundException { this(name != null ? new File(name) : null); }实际上还是new 了File的。RandomAccessFile的构造方法源码中也有这一句的。 纠错!!!! xml文件解析字段 初学提问:如何把一个String字符串转换为int啊? 为什么还出现NumberFormatException? 被它折磨的死去活来,实在是快郁闷死拉 我想问一下,javax和java包是放在哪个.jar文件中 走过、路过的都请来帮忙答题02,多谢!!! java的所有参数传递都是按值传递的!!!高手解释一下 JAVA application 有什么用? 糊涂啦!!有关Javax包和com包的问题 求解答 List vs. ArrayList
import java.io.*;
public class TestFileStream {
public static void main(String[] args){
int[] a= new int[10];
try{
FileInputStream input = new FileInputStream("test.dat");
FileOutputStream output = new FileOutputStream("test.dat"); for(int i=0;i<10;i++){
output.write(i);
}
output.close();
int value;
while((value=input.read())!=-1){
System.out.println(value);
}
input.close();
}catch(IOException ex){
ex.printStackTrace();
}
}
}
如果是用RandomAccessFile的话应该这么写:
import java.io.*;
public class IO {
public void main(String[] args){
int[] a= new int[10];
try{
RandomAccessFile file = new RandomAccessFile("test.dat","rw");
for(int i=0;i<10;i++){
file.write(i);
}
int value;
file.seek(0);
while((value=file.read())!=-1){
System.out.println(value);
}
file.close();
}catch(IOException ex){
ex.printStackTrace();
}
}
}
看不出有什么区别
public class TestFileStream {
public static void main(String[] args){
int[] a= new int[10];
try{
FileInputStream input = new FileInputStream("test.dat");
FileOutputStream output = new FileOutputStream("test.dat"); for(int i=0;i<10;i++){
output.write(i);
}
output.close();
int value;
while((value=input.read())!=-1){
System.out.println(value);
}
input.close();
}catch(IOException ex){
ex.printStackTrace();
}
}
}
public class IO {
public void main(String[] args){
int[] a= new int[10];
try{
RandomAccessFile file = new RandomAccessFile("test.dat","rw"); for(int i=0;i<10;i++){
file.write(i);
}
int value;
file.seek(0);
while((value=file.read())!=-1){
System.out.println(value);
}
file.close();
}catch(IOException ex){
ex.printStackTrace();
}
}
}
楼主,我手头资料没有你的那句话,但是我手头学习资料有这么一句话“RandomFileStream类提供了一个文件指针,用来标识要进行读写操作的下一数据的位置”我自己对这句抽象的话理解是参照链式表,可以随时打断指向重新建立。
底层实现,猜想类似arraylist和linkedlist区别。不一定对,我也刚学习到这块。
this(name != null ? new File(name) : null);
}实际上还是new 了File的。
this(name != null ? new File(name) : null);
}实际上还是new 了File的。
RandomAccessFile的构造方法源码中也有这一句的。