文本文件读取的问题
代码如下:
import java.io.*;
public class problem8
{
public static void main(String args[])
{
student stu=new student( " ", " ",0);
String str;
int operflag=0;
BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
System.out.println( "选择操作类型: ");
System.out.println( "1表示输入学生信息: ");
System.out.println( "2表示显示学生信息 ");
try
{
str=buf.readLine();
operflag=Integer.parseInt(str);
}
catch(Exception e)
{
System.out.println( "操作出错,需要退出! ");
System.exit(0);
}
switch (operflag)
{
case 1:
try
{
RandomAccessFile f=new RandomAccessFile( "mytest.txt ", "rw ");
System.out.println( "请输入学生姓名: ");
stu.stu_name=buf.readLine();
System.out.println( "请输入学生学号: ");
stu.stu_No=buf.readLine();
System.out.println( "请输入学生成绩: ");
str=buf.readLine();
stu.stu_score=Integer.parseInt(str);
f.write(stu.stu_name.getBytes());
f.write(stu.stu_No.getBytes());
f.writeInt(stu.stu_score);
f.write( "\n ");
f.close();
System.out.println( "学生信息输入成功! ");
}
catch(Exception e)
{
System.out.println( "信息输入出错,程序退出! ");
System.exit(0);
}
break;
case 2:
try
{
RandomAccessFile f=new RandomAccessFile( "mytest.txt ", "r ");
f.seek(0);
String strname= " ";
String strno= " ";
int i,score=0;
for(i=0;i <8;i++)
strname=strname+(char)f.readByte();
for(i=8;i <16;i++)
strno=strno+(char)f.readByte();
score= f.readInt();
System.out.println( "name: "+strname);
System.out.println( "no: "+strno);
System.out.println( "score: "+score);
}
catch(Exception e)
{
System.out.println( "信息读取失败! ");
System.exit(0);
}
break;
default:
}
}
}
class student
{
String stu_name,stu_No;
int stu_score;
final static int Length=8;
public student(String name,String No,int score)
{
if(name.length()> 8)
name=name.substring(0,8);
else
{
while(name.length() <8)
name=name+ "\u0000 ";
}
if(No.length()> 8)
No=No.substring(0,8);
else
{
while(No.length() <8)
No=No+ "\u0000 ";
}
this.stu_name=name;
this.stu_No=No;
this.stu_score=score;
}
}
问题是:输入的数据在文本文件里面没有数值显示,读取文本文件里面内容总是出错。
[解决办法]
改成这样就好了
import java.io.*;
public class sql
{
public static void main(String args[])
{
student stu=new student( " ", " ",0);
String str;
int operflag=0;
BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
System.out.println( "选择操作类型: ");
System.out.println( "1表示输入学生信息: ");
System.out.println( "2表示显示学生信息 ");
try
{
str=buf.readLine();
operflag=Integer.parseInt(str);
}
catch(Exception e)
{
System.out.println( "操作出错,需要退出! ");
System.exit(0);
}
switch (operflag)
{
case 1:
try
{
RandomAccessFile f=new RandomAccessFile( "d:\\mytest.txt ", "rw ");
System.out.println( "请输入学生姓名: ");
stu.stu_name=buf.readLine();
System.out.println( "请输入学生学号: ");
stu.stu_No=buf.readLine();
System.out.println( "请输入学生成绩: ");
str=buf.readLine();
stu.stu_score=Integer.parseInt(str);
f.writeUTF(stu.stu_name); //////用writeUTF方法把字符串数据写入文件
f.writeUTF(stu.stu_No);
f.writeInt(stu.stu_score);
f.close();
System.out.println( "学生信息输入成功! ");
}
catch(Exception e)
{
System.out.println( "信息输入出错,程序退出! ");
System.exit(0);
}
break;
case 2:
try
{
RandomAccessFile f=new RandomAccessFile( "d:\\mytest.txt ", "r ");
f.seek(0);
String strname= " ";
String strno= " ";
strname=f.readUTF(); ///再用readUTF方法把字符串数据读出来 注意 写的顺序要和读的一样!
strno=f.readUTF();
int score=f.readInt();
System.out.println( "name: "+strname);
System.out.println( "no: "+strno);
System.out.println( "score: "+score);
f.close();
}
catch(Exception e)
{
System.out.println( "信息读取失败! ");
System.exit(0);
}
break;
default:
}
}
}
class student
{
String stu_name,stu_No;
int stu_score;
final static int Length=8;
public student(String name,String No,int score)
{
if(name.length()> 8)
name=name.substring(0,8);
else
{
while(name.length() <8)
name=name+ "\u0000 ";
}
if(No.length()> 8)
No=No.substring(0,8);
else
{
while(No.length() <8)
No=No+ "\u0000 ";
}
this.stu_name=name;
this.stu_No=No;
this.stu_score=score;
}
}