Java能否像C语言那样读文件一行字符串到结构体变量中,以实现对结构体内的变量自动赋值?
比如,约定文本文件中每一行代表一个学生的联系方式,如某行数据是“01张三四_18688888888”,其约定的格式为:学号(2字节)姓名(8字节,不够往右补_)手机号(1...
比如,约定文本文件中每一行代表一个学生的联系方式,如某行数据是“01张三四_18688888888”,其约定的格式为:学号(2字节)姓名(8字节,不够往右补_)手机号(11字节),那么在C语言可以定义结构体Student:
struct Student{
char[2] num;
char[8] name;
char[11] phone;
} stu1;
然后用fread()函数把文件中的一行读到结构体变量stu1,这样就可以直接得到stu1.num为"01",stu1.name为"张三四_",stu1.phone为"18688888888"了。
在Java中,请问有没有现成的读文件方法能像C语言的fread()函数那样,能把文件一行的数据自动赋值到student对象的各个成员字段(num,name,phone)中?
谢谢!! 展开
struct Student{
char[2] num;
char[8] name;
char[11] phone;
} stu1;
然后用fread()函数把文件中的一行读到结构体变量stu1,这样就可以直接得到stu1.num为"01",stu1.name为"张三四_",stu1.phone为"18688888888"了。
在Java中,请问有没有现成的读文件方法能像C语言的fread()函数那样,能把文件一行的数据自动赋值到student对象的各个成员字段(num,name,phone)中?
谢谢!! 展开
5个回答
推荐于2016-06-07
展开全部
有;
JSON可以。
你那C的函数也是别人封装好的,只不过你这么一调用,看似简单。
将对象通过gson转为JSON串写入文件里;
读取文件里的内容,转为字符串,再把这些字符串用GSON转为对象Object,再将Object强转为Student赋给一个变量 或 直接调用即可。
以上两个方法,自己写好封装成fRead()、fWrite(),也能看似很简单的样子。
需要用到gson的jar包,可以搜索下载试试
例如有个对象Student student;想转为字符串 String str;
str = new GsonBuilder().create().toJson(student);
下面再将str反转回为newStudent 对象
Student newStudent = (Student)new GsonBuilder().create().fromJson(str,Student.class);
展开全部
有,BufferedReader.readLine(),读出字符串之后赋值给对象的成员变量,用set()。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以通过BufferedReader 流的形式进行流缓存,之后通过readLine方法获取到缓存的内容,之后进行变量赋值即可。
BufferedReader bre = null;
try {
String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流
while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环
{
System.out.println(str);//原样输出读到的内容,此处内容str可以赋值给任意变量
};
备注: 流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。
BufferedReader bre = null;
try {
String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流
while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环
{
System.out.println(str);//原样输出读到的内容,此处内容str可以赋值给任意变量
};
备注: 流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
类的序列化,你看看吧
这样一个文件可以记录一个类对象。。
而你说的,按照约定格式读取一行,再生成一个类对象,这样是必须可以的。。
只需要你把你读取的内容处理好,然后有一个按照一定格式生成一个类对象的方法即可
这样一个文件可以记录一个类对象。。
而你说的,按照约定格式读取一行,再生成一个类对象,这样是必须可以的。。
只需要你把你读取的内容处理好,然后有一个按照一定格式生成一个类对象的方法即可
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以看看 javolution 库提供的 Struct 类。
http://www.javolution.org/apidocs/javolution/io/Struct.html
http://www.javolution.org/apidocs/javolution/io/Struct.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询