| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
学习型 ASP/PHP/ASP.NET 主机 35元/年全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
赛孚耐:软件保护加密专家身份认证令牌USB KEY  
共有 262 人关注过本帖
标题:出现了错误
收藏  订阅  推荐  打印 
kingyor
Rank: 2
等级:注册会员
帖子:66
积分:784
注册:2006-6-4
出现了错误

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));%>//这里就有问题了,怎么办?
搜索更多相关主题的帖子: String  oldstr  filename  new  
2007-5-28 21:35
angeloc
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:36
帖子:1353
积分:13680
注册:2006-11-21

以下是引用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));%>//这里就有问题了,怎么办?


老牛明知夕阳晚,不用扬鞭自奋蹄; Angelo\'s BLOG
2007-5-29 10:04
kingyor
Rank: 2
等级:注册会员
帖子:66
积分:784
注册:2006-6-4

太神奇了,居然可以了,而且UTF-8乱码问题也没有了~~~~~~怎么会这样呢?

宝哥啊宝哥~~命苦啊命苦啊~~~
2007-5-29 19:20
angeloc
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:36
帖子:1353
积分:13680
注册:2006-11-21

因为你这里String oldstr = null

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

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


老牛明知夕阳晚,不用扬鞭自奋蹄; Angelo\'s BLOG
2007-5-30 09:19
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.085655 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved