首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

文本文件读取的有关问题

2012-01-13 
文本文件读取的问题代码如下:importjava.io.*publicclassproblem8{publicstaticvoidmain(Stringargs[]){s

文本文件读取的问题
代码如下:
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;
}

}

热点排行
Bad Request.