java io问题
来源:互联网 发布:印度出口数据 编辑:程序博客网 时间:2024/05/19 00:13
关于一个从文件中读取内容的编程问题
这里可以用FileInputStream 或者FileReader或RandomAccessFile流,分别用这三个流写了三个对应的方法。具体代码如下:
private static void fileInputStream() {
File f = new File("F:/ecilpse/workplace/io", "a.txt");
try {
byte[] b = new byte[100];
FileInputStream in = new FileInputStream(f);
int n = 0;
while ((n = in.read(b, 0, 100)) != -1) {
String str = new String(b, 0, n);
System.out.println(str);
}
in.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private static void fileReader() {
File f = new File("F:/ecilpse/workplace/io", "a.txt");
try {
char[] b = new char[2];
FileReader in = new FileReader(f);
int n = 0;
while ((n = in.read(b, 0, 1)) != -1) {
String str = new String(b, 0, n);
System.out.println(str);
}
in.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private static void randomAccessFile() throws NullPointerException {
File f = new File("F:/ecilpse/workplace/io", "a.txt");
RandomAccessFile inAndOut;
try {
inAndOut = new RandomAccessFile(f, "rw");
long length = inAndOut.length();
long position = 0;
inAndOut.seek(position);
while (position < length) {
String str = inAndOut.readLine();
byte b[] = str.getBytes("iso-8859-1");
str = new String(b);
position = inAndOut.getFilePointer();
System.out.println(str);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
1. 比较后发现 用FileInputReader和FileReader流最终都是构建一个字节数组,这样new一个String对象,而R安东AccessFile是不需要的,就像上面代码所写的,直接用流对象读取,只不过这里需要处理中文字符乱码问题。同时也是在while循环中生成了字节数组。三种方法比较后发现,前两种方法的字节流数组需要伴随着while循环一直的创建,不过现在我刚刚发现了一个问题,其实while循环中的String对象也是需要不停的创建,只不过没有n的限制,我想这样代价会小点。而且整个代码量也很少。如果再加上向文件中写入,再读出,那么整个代码量就会更大。
2. 另外在randomAccessFile方法中,由于设置了while(position<length),中间的<号换成=号的话 会抛出NullPointerException,之后在改的过程中,无论是抛出异常还是add catch()方法也不能解决,看来还是代码里面有问题。这里position随着文本的读入会增大,知道与length相等,如果改为=号那么while循环最后结束的条件就有问题,当position=length时,文本已经读完了,但是while循环条件成立,所以还是要执行循环体的内容,因此会抛出NullPointerException。
- java io问题
- java-io-flush问题
- java IO 问题分析
- java.io.EOFException 问题
- java io的编码问题
- java IO的一个问题
- java io流读取问题
- java.io.EOFException问题处理
- java io的编码问题
- Java IO一个简单问题
- java acm 输入输出io问题
- java程序中IO输入问题
- 彻底解决java的io流问题.
- java io流读文件,乱码问题
- 利用JAVA IO 解决乱码的问题
- Java IO读取文件中文乱码问题
- Java IO 读取文件中的乱码问题
- Java IO与NIO的相关问题
- assertThat使用
- freeswitch 配置大全 wiki
- 写给那些大学不怎么用功的我们:学习java的一些心得、对java发展的看法和一些代码
- 位运算符与位运算
- Fedora 14 live installation安装e1000e网卡驱动
- java io问题
- 李彦宏:互联网技术未来有三大新空间
- Renesas公司的芯片的片上存储器
- ubuntu 编译 Android 出现的若干错误及解决方法
- 【引用】保护眼睛--小技巧
- poj 1328 贪心
- Tomcat7.0.22在Windows下详细配置过程
- 十大C++经典教程
- Fedora 14 安装手记