永发信息网

C#自定义文件类型的问题 文件读取时候如何获得数据的偏移量

答案:1  悬赏:50  手机版
解决时间 2021-04-12 23:55
我的文件结构是这么写的 包括 头 主体 跟尾部
我想问个问题
我 生成的文件是由多个图片组成 主体部分记录着图片的具体参数 比如位于窗口的坐标
当我需要用我 写的程序读取这些图片的时候怎么读取他的坐标点呢?
来电思路 怎么定义主体部分?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
////定义重构文件主体部分即素材信息
namespace filetest
{
public class FileBody
{
private int x;
private int y;
private int div;
private int filetype;
private long filesize;
private byte[] fileio;
/// <summary>
/// 素材的X坐标
/// </summary>
public int X
{
get
{
return x;
}
set
{
x = value;

}
}
/// <summary>
/// 素材的 Y 坐标
/// </summary>
public int Y
{
get
{
return y;
}
set
{
y = value;
}


}
/// <summary>
/// 记录图层位置
/// </summary>
public int DIV
{
get
{
return div;
}
set
{
div = value;
}
}
/// <summary>
/// 记录文件类型
/// </summary>
public int FileType
{
get
{
return filetype;

}
set
{
filetype = value;
}
}
/// <summary>
/// 记录文件的字节数
/// </summary>
public byte[] FileIO
{
get
{
return fileio;
}
set
{
fileio = value;
}
}

}
}

文件主体由多个文件读取 我解析文件的时候要把素材解压出来 这个每个文件的偏移怎么取?

不用序列化 因为我要读取相关配置信息 配置信息在文件头

最佳答案

这个很简单嘛~~


文件里的N个图片想读哪个读哪个,具体实现看下面说明


你提到过有个文件头,这个设计是对的,文件头中让他包含上 这个文件里面的图片数目(使用int型的就可以),其他的你还需要什么信息也放在头里。 文件尾我觉得不需要你根据你的情况。


文件主体中就按照你定义的private int x;
private int y;
private int div;
private int filetype;
private long filesize;
private byte[] fileio;
这几个数据依次写入文件,把你要保存的图片都循环着写入。


最后的格式应该是




读取的时候:


这里文件头只有一个int的数据,所以打开文件后直接读取sizeof(int)位的数据 保存在一个int型变量中,这样文件头就读出来了。


现在再往下读就是文件体了。


继续读取3个sizeof(int)就是y,div filetype分别被读出来了,下一个sizeof(long) filesize就读出文件长度,然后根据这个filesize去把文件内容读出就可以了,然后继续循环其他的文件。


你想定位到某一个图片的坐标,比如读第3个,那就把前面两个数据占的数据位全都跳过去直接定位到第三个文件的开始处(sizeof(int)*4+sizeof(long))*2+文件1的filesize+文件2的filesize 别忘了文件头的那个sizeof(int) , 这样就定位到了文件3的开始处就是x所在的位置,然后读出你想要的数据来行了。

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我姓徐,宝宝快出生了,帮我想个名字罗!谢啦
滑动变阻器是一个用电器吗
成都市第十二幼儿园蓝光COCO分园地址在哪,我
下列没有错别字的一项是A.蕴藏 出类拔萃 生脱
请问贵阳有直接到四川巴中的车吗?或者怎么坐
人民的名义高育良,高小琴什么关系
一个男生整天盯着你看,代表了什么?是喜欢吗?
本人身高158.体重46公斤!应该穿多大裤子,26还
微博上的马地宇V是马天宇吗
什么是对冲基金
名都造型地址在什么地方,想过去办事
单选题恩格斯指出:“母权制的被推翻,乃是女
情人元旦祝福短信,少妇情人节给我发祝福短信
昆明同仁医院NT检查多少钱啊?第几周做?
买3G无线网卡应该注意什么问题
推荐资讯
我国产业结构不合理主要表现在哪
怎么用快车下载空间视频?
如何将朋友圈分组,微信6.0朋友圈分组怎么没有
adidas neo怎么去啊,有知道地址的么
华夏壹号茶城北门地址在什么地方,想过去办事
红顶商贾是什么意思,商贾云集的读音
怎样把Q秀 的两种头发叠在一起/?
蚌埠汤和墓怎么去
见了他父母,他提出做朋友,我该怎么办?
many times, but he still doesn’t know how
下列关于碳单质的叙述,错误的是A.用焦炭冶炼
春一课作者按什么层次写春的句子
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?