西安-安康:

车次 类型 始发站 出发站 开车时间 目的站 到达时间 用时 里程 终点站 硬座 软座 硬卧中 软卧下
K15 空调快速 济南 西安 01:24 安康 06:00 4小时44分 259 重庆北 41 - 92 136
4902/4903 空调普快 神木 西安 06:08 安康 10:44 4小时57分 259 安康 36 - 87 131
4902/4903 空调普快 神木 西安南 07:20 安康 10:44 3小时26分 216 安康 30 - 81 122
K626/K627 空调快速 西安 西安 08:50 安康 13:02 4小时12分 259 宜昌 41 - 92 136
K8160/K8157 空调快速 西安 西安 12:33 安康 17:29 4小时56分 259 汉中 41 61 92 136
1363 空调普快 北京西 西安南 13:04 安康 16:45 3小时44分 216 成都 30 - 81 122
K8160/K8157 空调快速 西安 西安南 13:24 安康 17:29 4小时7分 216 汉中 33 50 84 125
2334/2335/2337 普快 西安 西安 15:03 安康 19:18 4小时15分 259 贵阳 20 - 57 86
2334/2335/2337 普快 西安 西安南 15:47 安康 19:18 3小时33分 216 贵阳 17 - 54 81
4907/4910 空调普快 西安 西安 16:52 安康 21:16 4小时24分 259 安康 36 56 87 131
4907/4910 空调普快 西安 西安南 17:34 安康 21:16 3小时44分 216 安康 30 47 81 122
K541/K544 空调快速 乌鲁木齐 西安 18:57 安康 23:24 4小时39分 259 重庆北 41 - 92 136
K541/K544 空调快速 乌鲁木齐 西安南 20:09 安康 23:24 3小时21分 216 重庆北 33 - 84 125
1725 普快 太原 西安南 20:26 安康 23:48 3小时24分 216 重庆北 17 - 54 81

安康-西安:

车次 类型 始发站 出发站 开车时间 目的站 到达时间 用时 里程 终点站 硬座 软座 硬卧中 软卧下
K542/K543 空调快速 重庆北 安康 01:10 西安 05:28 4小时39分 259 乌鲁木齐 41 - 92 136
K16 空调快速 重庆北 安康 02:57 西安 07:14 4小时26分 259 济南 41 - 92 136
K16 空调快速 重庆北 安康 02:57 西安南 06:07 3小时19分 216 济南 33 - 84 125
K625/K628 空调快速 宜昌 安康 03:20 西安南 06:39 3小时30分 216 西安 33 - 84 125
K625/K628 空调快速 宜昌 安康 03:20 西安 07:32 4小时23分 259 西安 41 - 92 136
1726 普快 重庆北 安康 03:54 西安南 07:15 3小时33分 216 太原 17 - 54 81
1311/1314 普快 成都 安康 04:10 西安南 08:35 4小时37分 216 天津 17 - 54 81
4908/4909 空调普快 安康 安康 07:30 西安 11:59 4小时29分 259 西安 36 56 87 131
4908/4909 空调普快 安康 安康 07:30 西安南 10:59 3小时29分 216 西安 30 47 81 122
K8158/K8159 空调快速 汉中 安康 11:22 西安南 15:07 3小时55分 216 西安 33 50 84 125
K8158/K8159 空调快速 汉中 安康 11:22 西安 16:05 4小时53分 259 西安 41 61 92 136
K118 空调快速 攀枝花 安康 11:45 西安南 14:39 3小时2分 216 北京西 33 - 84 125
4901/4904 空调普快 安康 安康 18:14 西安南 21:34 3小时20分 216 神木 30 - 81 122
4901/4904 空调普快 安康 安康 18:14 西安 22:20 4小时6分 259 神木 36 - 87 131
2338/2336/2333 普快 贵阳 安康 18:43 西安 22:48 4小时17分 259 西安 20 - 57 86
2338/2336/2333 普快 贵阳 安康 18:43 西安南 22:04 3小时33分 216 西安 17 - 54 81

徐州-安康:
车次 类型 始发站 出发站 开车时间 目的站 到达时间 用时 里程 终点站 硬座 软座 硬卧中 软卧下
K205/K208 空调快速 青岛 徐州 01:22 安康 20:26 19小时12分 1215 成都 153 - 271 429
K282/K283 空调快速 上海 徐州 05:39 安康 22:29 16小时58分 1216 成都 153 - 271 429
K15 空调快速 济南 徐州 14:27 安康 次日06:00 15小时44分 1119 重庆北 143 - 254 400

安康-徐州:

车次 类型 始发站 出发站 开车时间 目的站 到达时间 用时 里程 终点站 硬座 软座 硬卧中 软卧下
K16 空调快速 重庆北 安康 02:57 徐州 18:22 15小时34分 1119 济南 143 - 254 400
K281/K284 空调快速 成都 安康 05:53 徐州 23:29 17小时43分 1216 上海 153 - 271 429
K206/K207 空调快速 成都 安康 07:00 徐州 次日00:20 17小时28分 1215 青岛 153 - 271 429

西安-徐州:

车次 类型 始发站 出发站 开车时间 目的站 到达时间 用时 里程 终点站 硬座 软座 硬卧中 软卧下
K16 空调快速 重庆北 西安南 06:10 徐州 18:22 12小时15分 903 济南 120 - 216 338
K16 空调快速 重庆北 西安 07:23 徐州 18:22 11小时8分 860 济南 113 - 201 316
1086 普快 乌鲁木齐 西安 07:41 徐州 18:43 11小时14分 860 济南 55 - 117 193
K289/K292 空调快速 成都 西安 09:51 徐州 21:17 11小时39分 860 上海 113 - 201 316
K375/K378 空调快速 西宁 西安 10:54 徐州 21:06 10小时21分 860 上海 113 - 201 316
K359/K362 空调快速 银川 西安 11:05 徐州 22:02 11小时9分 860 上海 113 - 201 316
K695/K698 空调快速 成都 西安 11:19 徐州 22:28 11小时21分 860 上海 113 - 201 316
1352/1353 普快 乌鲁木齐 西安 11:36 徐州 次日02:20 14小时56分 860 连云港东 55 - 117 193
1022/1023 普快 西安 西安 12:01 徐州 次日00:50 12小时49分 860 青岛 55 - 117 193
K246/K247 空调快速 成都 西安 13:03 徐州 23:39 10小时50分 860 扬州 113 - 201 316
1129/1132 空调普快 西安 西安 13:16 徐州 次日02:10 12小时54分 860 烟台 99 - 187 302
K558/K559 空调快速 延安 西安 17:24 徐州 次日03:53 10小时41分 860 上海 113 - 201 316
1148/1149 普快 宝鸡 西安 18:36 徐州 次日06:45 12小时29分 860 连云港东 55 - 117 193
K417/K420 空调快速 兰州 西安 19:04 徐州 次日06:02 11小时10分 860 泰州 113 - 201 316
T137/T140 空调特快 西安 西安 19:50 徐州 次日04:53 9小时3分 860 上海 113 - 201 316
T163/T166 空调特快 拉萨 西安 21:02 徐州 次日05:31 8小时41分 860 上海 113 - 201 316
T115/T118 空调特快 兰州 西安 21:09 徐州 次日06:20 9小时17分 860 上海 113 - 201 316
K593/K596 空调快速 乌鲁木齐 西安 21:50 徐州 次日09:20 11小时40分 860 南京西 113 - 201 316
K171/K174 空调快速 西宁 西安 22:06 徐州 次日10:20 12小时22分 860 青岛 113 - 201 316
T54/Q54/T51 空调特快 乌鲁木齐 西安 22:27 徐州 次日07:22 9小时1分 860 上海 113 - 201 316
T111/T114 空调特快 兰州 西安 22:42 徐州 次日07:37 9小时1分 860 杭州 113 - 201 316

徐州-西安:

车次 类型 始发站 出发站 开车时间 目的站 到达时间 用时 里程 终点站 硬座 软座 硬卧中 软卧下
K696/K697 空调快速 上海 徐州 00:50 西安 13:16 12小时32分 860 成都 113 - 201 316
T164/T165 空调特快 上海 徐州 01:29 西安 10:00 8小时37分 860 拉萨 113 - 201 316
T52/T53 空调特快 上海 徐州 03:07 西安 12:24 9小时31分 860 乌鲁木齐 113 - 201 316
K557/K560 空调快速 上海 徐州 04:40 西安 14:57 10小时25分 860 延安 113 - 201 316
1130/1131 空调普快 烟台 徐州 04:58 西安 15:59 11小时15分 860 西安 99 - 187 302
1085 普快 济南 徐州 13:40 西安 次日00:26 10小时54分 860 乌鲁木齐 55 - 117 193
1351/1354 普快 连云港东 徐州 13:50 西安 次日02:07 12小时37分 860 乌鲁木齐 55 - 117 193
K15 空调快速 济南 徐州 14:27 西安 次日01:16 11小时0分 860 重庆北 113 - 201 316
K290/K291 空调快速 上海 徐州 17:30 西安 次日03:49 10小时31分 860 成都 113 - 201 316
K376/K377 空调快速 上海 徐州 17:38 西安 次日04:43 11小时13分 860 西宁 113 - 201 316
K245/K248 空调快速 扬州 徐州 18:41 西安 次日06:11 11小时42分 860 成都 113 - 201 316
T112/T113 空调特快 杭州 徐州 20:08 西安 次日05:16 9小时16分 860 兰州 113 - 201 316
1147/1150 普快 连云港东 徐州 20:38 西安 次日07:52 11小时22分 860 宝鸡 55 - 117 193
K360/K361 空调快速 上海 徐州 21:42 西安 次日09:18 11小时46分 860 银川 113 - 201 316
1021/1024 普快 青岛 徐州 22:11 西安 次日10:52 12小时53分 860 西安 55 - 117 193
T138/T139 空调特快 上海 徐州 22:23 西安 次日07:58 9小时46分 860 西安 113 - 201 316
T116/T117 空调特快 上海 徐州 22:38 西安 次日07:38 9小时6分 860 兰州 113 - 201 316
K172/K173 空调快速 青岛 徐州 23:13 西安 次日10:06 11小时12分 860 西宁 113 - 201 316
K418/K419 空调快速 泰州 徐州 23:19 西安 次日10:34 11小时28分 860 兰州 113 - 201 316
K594/K595 空调快速 南京西 徐州 23:40 西安 次日10:13 10小时46分 860 乌鲁木齐 113 - 201 316

徐州-东莞:

车次 类型 始发站 出发站 开车时间 目的站 到达时间 用时 里程 终点站 硬座 软座 硬卧中 软卧下
T159/T162 空调特快 青岛 徐州 15:57 东莞东 次日11:37 19小时52分 1679 广州东 200 - 351 554

徐州-广州:
车次 类型 始发站 出发站 开车时间 目的站 到达时间 用时 里程 终点站 硬座 软座 硬卧中 软卧下
K301/K304 空调快速 连云港东 徐州 14:57 广州 次日14:26 23小时37分 1839 广州 208 - 367 584
T159/T162 空调特快 青岛 徐州 15:57 广州东 次日12:45 21小时0分 1765 广州东 203 - 357 568
1259/1262 普快 烟台 徐州 18:52 广州 次日20:51 26小时7分 1954 广州 107 - 221 372

安康-广州:

车次 类型 始发站 出发站 开车时间 目的站 到达时间 用时 里程 终点站 硬座 软座 硬卧中 软卧下
K355/K358 空调快速 重庆北 安康 05:35 广州 次日06:06 24小时46分 1771 广州 203 - 357 568
K768/K769 空调快速 汉中 安康 17:31 广州北 次日17:55 24小时37分 1744 广州 203 - 357 568
K768/K769 空调快速 汉中 安康 17:31 广州 次日18:56 25小时38分 1771 广州 203 - 357 568
1007/1010 普快 万州 安康 19:40 广州北 次日22:40 27小时10分 1767 广州 100 - 206 -
1007/1010 普快 万州 安康 19:40 广州 次日23:08 27小时38分 1794 广州 102 - 211 -


本文链接地址: 常用的几个列车时刻表(安康-西安-徐州-深圳)
https://blog.qingfengju.com/index.asp?id=5

分类:杂谈随感 查看次数:7996 发布时间:2009/4/19 23:13:02

 

头文件:
//MemTextFile.h
#pragma once

class CMemTextFile
{
public:
 CMemTextFile(void);
 ~CMemTextFile(void);
public:
 BOOL OpenFile(IN LPCTSTR lpPath);
 BOOL ReadString(IN OUT LPTSTR& lpBufferString);
 void CloseFile();
 DWORD GetFileSize();
private:
 HANDLE m_hFile;
 HANDLE m_hFileMap;
 PBYTE  m_lpbFile;
 DWORD m_dwFileSize;
 DWORD m_dwLastPos;

 TCHAR *m_pBuffer;
 DWORD m_dwBufferSize;
 BOOL m_bIsMalloc;
};


源文件:
//MemTextFile.cpp
#include "StdAfx.h"
#include <Shlwapi.h>
#pragma comment(lib,"Shlwapi.lib")
#include "MemTextFile.h"

#define DEF_MEM_INC 100

CMemTextFile::CMemTextFile(void)
{
}

CMemTextFile::~CMemTextFile(void)
{
 CloseFile();
}

BOOL CMemTextFile::OpenFile( IN LPCTSTR lpPath )
{
 m_hFile=INVALID_HANDLE_VALUE;
 m_hFileMap=NULL;
 m_lpbFile=NULL;
 m_dwFileSize=0;
 m_dwLastPos=0;
 m_dwBufferSize=DEF_MEM_INC;
 m_pBuffer=NULL;
 m_bIsMalloc=FALSE;

 if (!PathFileExists(lpPath))
 {
  return FALSE;
 }
 m_hFile=CreateFile(
  lpPath,//路径
  GENERIC_READ,//读
  FILE_SHARE_READ,//共享类型只读
  NULL,//文件的安全特性
  OPEN_EXISTING,//文件必须已经存在
  FILE_FLAG_SEQUENTIAL_SCAN,//针对连续访问对文件缓冲进行优化
  NULL);//如果不为零,则指定一个文件句柄

 if (INVALID_HANDLE_VALUE==m_hFile)
 {
  return FALSE;
 }

 m_dwFileSize=::GetFileSize(m_hFile,NULL);

 m_hFileMap = CreateFileMapping(m_hFile,
  NULL, //安全对象
  PAGE_READONLY,//以只读方式打开映射
  0,
  0, //用磁盘文件的实际长度
  NULL);//指定文件映射对象的名字
 if (NULL==m_hFileMap)
 {
  return FALSE;
 }

 m_lpbFile = (PBYTE) MapViewOfFile(
  m_hFileMap,
  FILE_MAP_READ,
  0,
  0, //映射整个文件映射对象
  0);//零表示允许windows寻找地址
 if (NULL==m_lpbFile)
 {
  return FALSE;
 }

 return TRUE;
}

void CMemTextFile::CloseFile()
{
 if (m_lpbFile!=NULL)
 {
  UnmapViewOfFile(m_lpbFile);
 }
 if (m_hFileMap!=NULL)
 {
  CloseHandle(m_hFileMap);
 }
 if (m_hFile!=INVALID_HANDLE_VALUE)
 {
  CloseHandle(m_hFile);
 }
 m_hFile=INVALID_HANDLE_VALUE;
 m_hFileMap=NULL;
 m_lpbFile=NULL;
 m_dwFileSize=0;
 m_dwLastPos=0;
 m_bIsMalloc=FALSE;
 if (m_pBuffer!=NULL)
 {
  free(m_pBuffer);
  m_pBuffer=NULL;
 }
 m_dwBufferSize=0;
}

BOOL CMemTextFile::ReadString(IN OUT LPTSTR& lpBufferString)
{
 if (NULL==m_lpbFile)
 {
  return FALSE;
 }

 if (m_dwLastPos>=(m_dwFileSize-1))
 {
  return FALSE;
 }

 if (!m_bIsMalloc)
 {
  m_pBuffer=(TCHAR*)malloc(m_dwBufferSize*sizeof(TCHAR));
  if (m_pBuffer==NULL)
  {
   return FALSE;
  }
  m_bIsMalloc=TRUE;
 }
 memset(m_pBuffer,0,m_dwBufferSize*sizeof(TCHAR));

 DWORD dwCount=0;
 while(m_dwLastPos<(m_dwFileSize-1))
 {
  if (m_lpbFile[m_dwLastPos]=='\r')//回车CR
  {
   ++m_dwLastPos;
   if (m_dwLastPos<(m_dwFileSize-1))
   {
    if (m_lpbFile[m_dwLastPos]=='\n')//回车后紧接着是换行CR LF
    {
     ++m_dwLastPos;
    }
   }
   break;
  }
  else if (m_lpbFile[m_dwLastPos]=='\n')//换行LF
  {
   ++m_dwLastPos;
   break;
  }

  if (dwCount>=m_dwBufferSize)
  {
   m_pBuffer=(TCHAR*)realloc(m_pBuffer,(m_dwBufferSize+DEF_MEM_INC)*sizeof(TCHAR));
   if (m_pBuffer==NULL)
   {
    return FALSE;
   }
   memset(m_pBuffer+m_dwBufferSize,0,DEF_MEM_INC*sizeof(TCHAR));
   m_dwBufferSize=m_dwBufferSize+DEF_MEM_INC;
  }

  m_pBuffer[dwCount++]=(TCHAR)(m_lpbFile[m_dwLastPos]);
  ++m_dwLastPos;
 }

 m_pBuffer[dwCount++]='\n';
 m_pBuffer[dwCount++]='\r';
 lpBufferString=m_pBuffer;

 return TRUE;
}

DWORD CMemTextFile::GetFileSize()
{
 return m_dwFileSize;
}


使用方法:
 
CMemTextFile txt;
 if (!txt.OpenFile(_T("Bigtest2.nc")))
 {
  AfxMessageBox(_T("打开文件失败!!"));
 } 

 TCHAR *szLine=NULL;
 while(txt.ReadString(szLine))
 {
  //TRACE("szLine=%s\n",szLine);
 }
 txt.CloseFile();


性能比较:
硬件环境为E5200CPU,2G内存。
测试文件为40M,200万行的文本文件。

使用CMemTextFile,用时653ms。
使用CStdioFile,用时4120ms。
 

时间用指令RDTSC测得:
__asm
{
   _emit 0x0F;
   _emit 0x31;
}


本文链接地址: 用内存映射读取大文本文件的类
https://blog.qingfengju.com/index.asp?id=4

分类:Win32/C++ 查看次数:14869 发布时间:2009/4/18 20:00:15