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)中?

谢谢!!
展开
 我来答
匿名用户
推荐于2016-06-07
展开全部

有;

JSON可以。

你那C的函数也是别人封装好的,只不过你这么一调用,看似简单。

  1. 将对象通过gson转为JSON串写入文件里;

  2. 读取文件里的内容,转为字符串,再把这些字符串用GSON转为对象Object,再将Object强转为Student赋给一个变量 或 直接调用即可。

  3. 以上两个方法,自己写好封装成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);
维特bP
2014-01-01 · TA获得超过406个赞
知道小有建树答主
回答量:659
采纳率:33%
帮助的人:182万
展开全部
有,BufferedReader.readLine(),读出字符串之后赋值给对象的成员变量,用set()。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
198901245631
推荐于2016-05-17 · TA获得超过3.5万个赞
知道大有可为答主
回答量:9037
采纳率:92%
帮助的人:1721万
展开全部
可以通过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流会一直存在,直到程序运行结束。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Stale331x
2014-01-01 · TA获得超过1299个赞
知道小有建树答主
回答量:1276
采纳率:33%
帮助的人:832万
展开全部
类的序列化,你看看吧
这样一个文件可以记录一个类对象。。

而你说的,按照约定格式读取一行,再生成一个类对象,这样是必须可以的。。
只需要你把你读取的内容处理好,然后有一个按照一定格式生成一个类对象的方法即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友12ee0fd
2014-01-01 · TA获得超过4.7万个赞
知道大有可为答主
回答量:1.1万
采纳率:66%
帮助的人:2337万
展开全部
可以看看 javolution 库提供的 Struct 类。
http://www.javolution.org/apidocs/javolution/io/Struct.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式