如何使用Java.io的io流读取全部数据和一行数据和某列数据(这些数据不能出现乱码) 5C

下面是C++数据文件的数据数据结构
struct scadalssjEX //历史事件数据结构
{
__int32 bh ; //编号
__int32 ch ; //厂号
__int32 xh ; //点号
char cm[ 40 ] ; //厂名
char dm[ 60 ] ; //点名
char date[ 20 ] ; //日期
char time[ 20 ] ; //时间
char ms[ 120 ] ; //描述
char CITY[24] ; //城市名称
char province[30]; //省名
char LineName[24]; //线路名
char sjclass[ 20 ] ; //事件类别
char by[ 20 ] ; //备用 巡检中改成汇报人星迷
__int32 by1 ; //备用
__int32 del ; //删除标记(未被删除=-999)
char DeviceName[28] ; //设备名称(改成资产编号)
char JD_Name[20]; //接单人姓名
char JD_Time[20]; //接单时间或派单时间
__int32 JD_CL ; //接档处理结果 0 =未处理 1=正在处理 3=已经处理
char JD_CL_Image[40]; //接单处理照片文件名
char JD_CL_BG[40]; //接单处理报告文件名
__int32 BY3 ; //备用
char BY_String[40] ; //备用 改为工单号(组成:YYYYMMDDHHNNSSZZZ+测量点号8个字符)
char Title[40] ; //标题 改为派单人姓名
char QX_TIME[20]; //抢修时间
char QX_Name[ 20] ; //抢修人员姓名
char JG_Name[40]; //监管人员姓名
char QX_NR[512] ; //抢修内容
char QX_JG[512] ; //抢修结果
char WCQJ_TIME[20] ; //完成抢修时间
};
数据文件在百度网盘中 https://pan.baidu.com/s/14tgrnJHeSDvkVr9yT48KGA

4个回答

因为IO流的效率低,所以我稍微修改了一下,性能要高一些。
读取全部数据把count参数设置为Integer.MAX_VALUE

/**
* 读取文本中指定行开始的count行数据
*
* @param filePath 文件绝对路径
* @param offet 读取起始行
* @param count 读取的行总数
* @return
* @throws Exception
*/
public static List read(String filePath, int offet, int count) throws Exception {
List contentList = new ArrayList<>();
if (null == filePath || filePath.isEmpty())
return contentList;
File file = new File(filePath);
// BufferedReader:从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
BufferedReader buf = null;
try {
// FileReader:用来读取字符文件的便捷类。
buf = new BufferedReader(new FileReader(file));
// buf = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
String temp = null;
int n = 0;
int endex = offet + count;
while ((temp = buf.readLine()) != null) {
if (n >= offet && n <= endex)
contentList.add(temp);
n++;
}
return contentList;
} catch (Exception e) {
throw e;
} finally {
if (buf != null) {
try {
buf.close();
} catch (IOException e) {
e.getStackTrace();
}
}
}
}

qq_42232303
qq_42232303 https://blog.csdn.net/u013087513/article/details/51999533
大约 2 年之前 回复
Mr_cuiwei
崔伟 int类型的乱码,转码也解决不了
大约 2 年之前 回复

File file = new File("文件路径/文件名");
FileInputStream fi = new FileInputStream(file);
BufferedReader bufr = new BufferedReader(new InputStreamReader(fi,"utf-8"));
String line=null;
while((line=bufr.readLine())!=null){
System.out.println(line);

Mr_cuiwei
崔伟 int类型的乱码,转码也解决不了
大约 2 年之前 回复

设置格式为UTF-8

Mr_cuiwei
崔伟 int类型的乱码,转码也解决不了
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐