文件属性结构体_finddata_t

最近工作上有些事情需要对文件结构来进行修改
于是 便想着要分析下Windows上的文件结构属性
想着Windows应该早就已经定义了一个专门的结构体用来存储文件信息
便先来分析分析下这个结构体吧…..

功能:

用来存储文件各种信息的结构体。

定义:

struct _finddata_t
{
unsigned attrib;
time_t time_create;
time_t time_access;
time_t time_write;
_fsize_t size;
char name[_MAX_FNAME];
};

变量:

unsigned attrib:
文件属性的存储位置。它存储一个unsigned单元,用于表示文件的属性。
文件属性是用位表示的,主要有以下一些:
_A_ARCH(存档)
_A_HIDDEN(隐藏)
_A_NORMAL(正常)
_A_RDONLY(只读)
_A_SUBDIR(文件夹)
_A_SYSTEM(系统)
这些都是在头文件中定义的宏,可以直接使用,而本身的意义其实是一个无符号整型(只不过这个整型应该是2的几次幂,从而保证只有一位为1,而其他位为0)。既然是位表示,那么当一个文件有多个属性时,它往往是通过位或的方式,来得到几个属性的综合。例如只读+隐藏+系统属性,应该为:_A_HIDDEN | _A_RDONLY | _A_SYSTEM 。
time_t time_create:
这里的time_t是一个长整型变量类型,用来存储时间的,我们暂时不用理它,只要知道,这个time_create变量是用来存储文件创建时间的就可以了。
time_t time_access:
文件最后一次被访问的时间。
time_t time_write:
文件最后一次被修改的时间。
_fsize_t size:
文件的大小。这里的_fsize_t应该可以相当于unsigned整型,表示文件的字节数。
char name[_MAX_FNAME]:
文件的文件名。这里的_MAX_FNAME是一个常量宏,它在头文件中被定义,表示的是文件名的最大长度。

头文件引用:

#include "io.h"

改变工作路径 _chdir与_wchdir

写程序的时候发现在查看文件目录结构的时候发现其实际路径有变更
便从MSDN上查看了关于路径变更的相关函数

功能:

改变工作目录

注意事项:

此 API 不能用于在 Windows 运行时中执行的应用程序。

原型:

int _chdir(
 const char *dirname
 );
 int _wchdir(
 const wchar_t *dirname
 );

参数:

dirname
新的工作目录路径。

返回值:

函数返回值为 0,则表示成功, 返回值为– 1 则表示失败。
如果找不到指定的路径,errno 设置为 ENOENT。
如果 dirname 是 NULL,则调用无效参数处理程序。
如果执行允许继续,errno 设置为 EINVAL ,函数返回 -1。

备注:

1.当前目录由_chdir函数中的dirname指定。 dirname 参数必须引用现有的某个目录。 如果盘符进行变更,指定的木目录也会随着进行变更。比如说,当前路径为\bin,当切换至windows系统上的c盘时,其路径将会变更成c盘;
2.当在路径中使用选项反斜杠字符 (\) 时,必须使用两个反斜杠 (\\) 来代替反斜杠 (\);
3._wchdir 是 _chdir的宽字符版本,区别仅在于_wchdir中的 dirname 参数是宽字符字符串。_wchdir与_chdir 类似。

示例:

// crt_chdir.c
// arguments: C:\WINDOWS
/* 本程序用来验证所给的目录是否存在 */
#include <direct.h>
#include <stdio.h>
#include <stdlib.h>
int main( int argc, char *argv[] )
{
	if(_chdir( argv[1] ) )
	{
		switch (errno)
		{
		case ENOENT:
			printf( "Unable to locate the directory: %s\n", argv[1] );
			break;
		case EINVAL:
			printf( "Invalid buffer.\n");
			break;
		default:
			printf( "Unknown error.\n");
		}
	}
	else
		system( "dir *.exe");
}

将相对路径转换成绝对路径_fullpath,_wfullpath

近来在写程序的时候需要将相对路径转换成一个绝对路径
上MSDN上搜索了一下 结果竟然还真让我发现了这样的一个函数
赶紧将之进行汉化,并于大家分享一下…..

功能:

将一个相对路径更改成绝对路径

原型:

char *_fullpath( 
   char *absPath,
   const char *relPath,
   size_t maxLength 
);
wchar_t *_wfullpath( 
   wchar_t *absPath,
   const wchar_t *relPath,
   size_t maxLength 
);

参数:

absPath:
指向绝对路径指针
relPath:
传入的相对路径值
maxLength:
绝对路径的最大长度。_fullpath的单位为bytes,_wfullpath的单位为wchar_t(宽字符)。

返回值:

返回一个指向绝对路径下的缓冲容器中。否则返回NULL。
返回空:相对路径中包含不可达的盘符,或者绝对路径长度长于最大长度。

头文件:

#include
\\machine\shareName\msvSrc\crt\headerFiles\stdlib.h

举例:

#include <stdio .h>
#include <conio .h>
#include <stdlib .h>
#include <direct .h>

void PrintFullPath( char * partialPath )
{
   char full[_MAX_PATH];
   if( _fullpath( full, partialPath, _MAX_PATH ) != NULL )
      printf( "Full path is: %s\n", full );
   else
      printf( "Invalid path\n" );
}

int main( void )
{
   PrintFullPath( "test" );	//输出Full path is: C:\Documents and Settings\user\My Documents\test
   PrintFullPath( "\\test" );	//输出Full path is: C:\test
   PrintFullPath( "..\\test" );	//输出Full path is: C:\Documents and Settings\user\test
}

原文地址:http://msdn.microsoft.com/zh-HK/library/506720ff(v=vs.71).aspx

解决主机500错误

使用主机有时候登陆网站的时候会出现“Internal Server Error,500 error”。经上网搜索,发现出现该种情况通常有以下三种可能:

1.服务器资源超载

如果你没对网站文件做过什么更改的话,最有可能的是同服务器的资源超载:即同一时间内处理器有太多的进程需要处理的时候,会出现500错误。借助SSH,可以在命令行中输入以下命令查看:

ps faux
ps faux |grep <em>username</em>

如果你查到某个进程消耗过多资源,可以用kill命令强制关闭这个进程,只需输入该进程的进程号(Pid):

kill -9 <em>pid</em>

2.文件权限设置错误

500错误还有可能是对文件设置了不正确的权限:

后台目录和文件的权限默认应该是755,而图片,文字等html文件应该是644。所以如果在刚刚上传文件后出现500错误,应该主要检查文件权限设置。

可以使用FTP软件选中所有文件,然后批量修改文件权限。也可以在SSH中更改相应的权限…

chmod 644 [filename]

3 .htaccess文件写入错误的代码

在使用某些wordpress SEO插件的时候,插件会改写.htacess文件,如果语法错误的话就有可能造成500错误!

在.htaccess文件中,可能因为添入了一些与源文件冲突的代码。所以为了检测到错误语句,最好的方法是为语句添加注释来逐条验证。因为注释之后,语句就不再起作用。

逐条添加“#”在语句前面,如

DirectoryIndex default.html
AddType application/x-httpd-php5 php

你可以添加#到该命令前,从而实现注释效果:

DirectoryIndex default.html
#AddType application/x-httpd-php5 php

这个方法可以迅速定位错误的命令,如果你找不到错误的段落,可以尝试把所有的命令全部添上注释然后反过来逐条删除#检查错误!判断出错误语句之后,可以删掉#恢复正常!

C++生成空白文件

临近元旦 平台需要的空白对账文件已经不足
没办法 只能够写个脚本来生成一下一些空白文件了

要求:

1.名字需要以JXDZ+日期来命名
2.生成的文件大小必须为0KB,即为空白文件

其实 需求也还是比较简单的
想着之前也准备用C++来进行文件处理的
便按照网上的代码 自己琢磨了一个小程序
结果 竟然效果还不错…..

好吧 废话不多说 直接贴代码吧…..

#include "stdafx.h"
#include "afx.h"
#include <fstream>
#include <iostream>
#include <string>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	cout<<"请输入获取文件的目录:"<<endl;
	char _fPath[MAX_PATH];
	cin>>_fPath;
	CString fPath = _fPath;

	for (int i = 1; i <= 12 ; i++){
		for ( int j = 1; j <= 31 ; j++){
			switch(i){
				case 2: if(j > 28) continue;
				case 4:
				case 6:
				case 9:
				case 11: if (j == 31) continue;
			}
			CString s;
			s.Format(_T("%02d%02d"),i,j); 
			CString path = fPath + "JXDZ2014" + s;
			fstream file(path,ios::out);
			if (!file){
				cout<<"写文件失败!!"<<endl;
			}
			//file<<endl;
			file.close();
		}
	}
	getchar();
	return 0;
}

其实也还是比较简单的 就利用了下fstream文件流中的ofstream来处理的

之前也有写入endl,结果竟然发现如果写入endl的话文件竟然会有1KB,从而不符合要求
所以 后来就干脆就没有写了

嘿嘿 最终还算是符合了对账文件的要求….

网站开始

诶 突然间发现自己在假设站点方面有一个很大的弊病 — 强迫症太严重了….

刚开始的时候把 弄一个站点就只是想着和大家分享一下自己的喜好
可是之后呢 由于站点的分享效果不是特别好 所以就总是关注一些细节方面的东西
就算明明知道 那些事情对自己站点的建设完全是没有任何影响的….

就比如说之前假设这个站点的时候吧
刚开始的时候 就在旁边想着这站点应该要怎样怎样
于是 参考了他人的站点建设过程 第一要素就是把自己的网站内容给规划好
具体的内容 可以参考关于本站 毕竟那是花了自己一晚上的时间才搭建起来的~~

好吧 闲话不多说了 反正站点就开始公布了
之前考虑的强迫症式的东西 我也懒的再继续了
大不了以后再重新规划一下 优化一下数据库吧….

不然 就如前段时间一样 明明站点早就已经架设好了
由于一直在规划标题 搞得各种郁闷 忧桑….

好了 亲 站点开始对外公布
希望以后 我的强迫症会好一点吧
这站点的内容 我可能会经常上网搜索一些东西
但是 其他的站长也不用担心 我只会收集一下我自己喜欢的事务 而不会对站点进行采集的 ^_^

全能星战 2013-12-13期

像这种音乐类的综艺节目,总少不了各种吹捧与抨击。刚开始获取还有点意思,但听久了感觉所谓的砖家真心没意思….
还是老样子,屏蔽了所谓专业人士的评论,单纯的欣赏乐手们的音乐。

《全能星战》是2013年江苏卫视倾力打造的明星音乐真人秀节目。以明星挑战六种不同音乐类型,发掘音乐潜能,为观众呈现不同音乐类型的风格和明星的人物性格,以人物故事和不同的曲风演绎为节目立足之点,力求为观众带来一场超级视听盛宴。

孙楠 — 离不开你 — 黑人灵歌 、中国民乐

龚琳娜 — 爱情买卖 — 戏曲、歌剧、民谣、摇滚、爵士、嘻哈、说唱

陶喆 — 我愿意 — 摇滚、歌剧

吴克羣 — 倔强 — 英式摇滚、雷鬼

胡彦斌 — 你怎么舍得我难过 — 弗拉明戈、R&B

吴克羣 – 陈子鸿 — 一场游戏一场梦

龚琳娜 – 老锣 — 黄河船夫曲