注册 登录
编程论坛 J2EE论坛

出现了错误

kingyor 发布于 2007-05-28 21:35, 654 次点击
package xi;
import java.io.*;
public class Xigust{
public void setstr(String filename,String str){
try{
RandomAccessFile a = new RandomAccessFile(filename,"rw");
long f = a.length();
long f1 = 0;
if(f==f1){
File newfile = new File(filename);
a = new RandomAccessFile(newfile,"rw");
a.writeBytes(str);
}
else{String oldstr = null;
while(f1<f){
oldstr = oldstr+ a.readLine();
f1 = a.getFilePointer();
}
/*str = str + oldstr;*/
a.writeBytes(str);
}
}
catch (IOException e1) {
e1.printStackTrace();
}
}
public String getxifile(String filename){//getxifile方法
String m = "<br/>";
try{
RandomAccessFile a = new RandomAccessFile(filename,"rw");
long f = a.length();
long f1 = 0;
if(f==f1){
return m;
}
else{
String oldstr = null;
while(f1<f){
oldstr = oldstr+ a.readLine();
f1 = a.getFilePointer();
}
m = oldstr;
return m;
}
}
catch(IOException e1){
e1.getMessage();
}
return m;
}
public static void main(String[] args){
Xigust s = new Xigust();
String d=s.getxifile("F:\\www\\xi\\txt\\b.txt");
System.out.print(d);//这里没有问题,可以正常out。print
}
}


下面是一个JSP
<%@ page import="xi.*,java.io.*"%>
<%
Xigust yuxi =new Xigust();
String path="F:\\www\\xi\\txt\\b.txt";
out.println(yuxi.getxifile(path));%>//这里就有问题了,怎么办?
3 回复
#2
angeloc2007-05-29 10:04
以下是引用kingyor在2007-5-28 21:35:54的发言:
package xi;
import java.io.*;
public class Xigust{
public void setstr(String filename,String str){
try{
RandomAccessFile a = new RandomAccessFile(filename,"rw");
long f = a.length();
long f1 = 0;
if(f==f1){
File newfile = new File(filename);
a = new RandomAccessFile(newfile,"rw");
a.writeBytes(str);
}
else{String oldstr = null;//这里你改成String oldstr="";再试试吧!而且文件读写完毕最好记得关闭!
while(f1<f){
oldstr = oldstr+ a.readLine();
f1 = a.getFilePointer();
}
/*str = str + oldstr;*/
a.writeBytes(str);
}
}
catch (IOException e1) {
e1.printStackTrace();
}
}
public String getxifile(String filename){//getxifile方法
String m = "<br/>";
try{
RandomAccessFile a = new RandomAccessFile(filename,"rw");
long f = a.length();
long f1 = 0;
if(f==f1){
return m;
}
else{
String oldstr = null;
while(f1<f){
oldstr = oldstr+ a.readLine();
f1 = a.getFilePointer();
}
m = oldstr;
return m;
}
}
catch(IOException e1){
e1.getMessage();
}
return m;
}
public static void main(String[] args){
Xigust s = new Xigust();
String d=s.getxifile("F:\\www\\xi\\txt\\b.txt");
System.out.print(d);//这里没有问题,可以正常out。print
}
}


下面是一个JSP
<%@ page import="xi.*,java.io.*"%>
<%
Xigust yuxi =new Xigust();
String path="F:\\www\\xi\\txt\\b.txt";
out.println(yuxi.getxifile(path));%>//这里就有问题了,怎么办?

#3
kingyor2007-05-29 19:20
太神奇了,居然可以了,而且UTF-8乱码问题也没有了~~~~~~怎么会这样呢?
#4
angeloc2007-05-30 09:19
因为你这里String oldstr = null

后面这里的"oldstr = oldstr+ a.readLine();"oldstr还是NULL,就算加上了后面的字符串也是NULL开头,所以后面使用NULL当然错误了!
任何等于NULL的变量使用之间都需要初始化,字符串就让它等于""空.这是个好习惯!

还有你文件读取完成之后要对文件,输入输出流进行CLOSE操作,这也是好习惯!

1