或者你应该用Byte数组?
看看这里
http://9iyou.com/Program_Data/VB-12012.html
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Public Function Str2Byt(ByVal s As String) As Variant
Dim bytVar() As Byte
Dim n As Integer
n = LenB(s)
ReDim bytVar(n)
CopyMemory ByVal VarPtr(bytVar(0)), ByVal StrPtr(s), n
Str2Byt = bytVar
End Function
老师笔记
命令详解
1、目前计算机系统中都是用bytes(字节)单位来计量
2、事实上计算机最小的计量单位是bits(位)
3、1byte=8 bits
4、假设byte可以看成底下到模样
5、8个空格就是8个位,而每个空格可以是0或1,现在假设我们只存入了一个1,那会剩余到7个空位,默认情况下这7个空位无法在写入数据。
6、但压缩技术就是把这些没用到到空间提出来,以让档案占用到空间变小
重点!
Linux 系统不以扩展名为文件类型识别的依据,这里的扩展名只是让用户易于分辨。
常见命令工具
gzip, bzip2 以及 xz ,这些都只能对单个文件进行压缩,不能操作目录。
tar 可以对一个到多个文件或者一个目录进行打包成一个单一的文件,但单独使用 tar 命令时,只是打包,不压缩。
后来, GNU 计划 中,将整个 tar 与压缩的功能结合在一起,如此一来提供使用者更方便并且更强大的压缩与打包功能!
示例: 备份系统的配置文件,并且保留源文件的权限和属性信息
查看
解压
打包压缩的时候可以排除一个或者多个文件或者目录
老师笔记
记录系统活动信息有几个文件,他们分别记录了不同的信息。
例如:何时、何地 (来源 IP)、何人 (账户或者服务名称)、做了什么动作 。
换句话说就是:记录系统在什么时候由哪个程序做了什么样的行为时,发生了何种的事件等等
其实,不止系统有日志,在系统上运行的很多应用程序(软件) 都有自己的日志记录。比如 MySQL 默认的日志是 /var/log/mysqld.log
这些日志是我们排除的首要入手点,假如系统或者服务出现了错误,要第一时间分析日志中的报错信息。而不是去到网上搜索报错信息。因为大部分时候,一个报错信息,有可能会有多种情况导致,所以要结合自己的系统环境分析具体的情况。
CentOS 使用 rsyslog.service 这个服务来统一管理这些系统日志文件。
既然是服务,就会有配置文件.
配置文件用于设置
比如:
Linux 核心的 syslog 认识的服务类型主要有下面这些:
Linux 核心的 syslog 定义的日志级别:
编辑 /etc/rsyslog.conf 文件
保存退出后
重启服务
通过配置 /etc/rsyslog.conf 可以把一个 Linux 主机配置成一台 日志服务器,这样其他 Linux 主机的日志,除了记录在自己的本地外,还会发送的这台日志到服务器上一份。
编辑 /etc/rsyslog.conf
重启服务
检查监听端口
编辑 /etc/rsyslog.conf
什么是日志轮转,为什么要轮转
日志轮转也叫日志的切割,通俗来讲就是对日志文件进行大小的控制。
Linux 系统通常会长时间的不停机运行,这样就会产生好多信息记录到不同的日志中。随着时间的推移,日志的容量自然会越来越大,那问题就来了,硬盘的空间是有限的,那为了控制日志文件的大小,就需要对日志文件进行控制。
同时是把目前的日志文件改名,紧接着创建一个新的日志文件,名称和原来的一样,重启服务进程,让其向新的日志文件中写日志。
logrotate 负责对系统日志的轮转。
通过定时任务每天都会执行一次。
logrotate 的主要功能就是将旧的日志文件改成旧文件, 并且重新创建一个新的空的文件来记录。
如下图:
/etc/logrotate.conf 的默认值
假如,想对某个日志文件实现轮转,建议在 /etc/logrotate.d/ 目录中添加子配置文件
比如
在 目录下编辑一个文件
可以使用 logrotate 命令测试
老师笔记
通过工具类来实现本地路径定义和下载即可。import hkrt.b2b.view.util.Log
import hkrt.b2b.view.util.ViewUtil
import java.io.ByteArrayOutputStream
import java.io.FileInputStream
import java.io.FileOutputStream
import java.io.InputStream
import org.apache.commons.net.ftp.FTPClient
import org.apache.commons.net.ftp.FTPFile
public class CCFCCBFTP {
/**
* 上传文件
*
* @param fileName
* @param plainFilePath 明文文件路径路径
* @param filepath
* @return
* @throws Exception
*/
public static String fileUploadByFtp(String plainFilePath, String fileName, String filepath) throws Exception {
FileInputStream fis = null
ByteArrayOutputStream bos = null
FTPClient ftpClient = new FTPClient()
String bl = "false"
try {
fis = new FileInputStream(plainFilePath)
bos = new ByteArrayOutputStream(fis.available())
byte[] buffer = new byte[1024]
int count = 0
while ((count = fis.read(buffer)) != -1) {
bos.write(buffer, 0, count)
}
bos.flush()
Log.info("加密上传文件开始")
Log.info("连接远程上传服务器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22)
ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22)
ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD)
FTPFile[] fs
fs = ftpClient.listFiles()
for (FTPFile ff : fs) {
if (ff.getName().equals(filepath)) {
bl="true"
ftpClient.changeWorkingDirectory("/"+filepath+"")
}
}
Log.info("检查文件路径是否存在:/"+filepath)
if("false".equals(bl)){
ViewUtil.dataSEErrorPerformedCommon( "查询文件路径不存在:"+"/"+filepath)
return bl
}
ftpClient.setBufferSize(1024)
ftpClient.setControlEncoding("GBK")
// 设置文件类型(二进制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE)
ftpClient.storeFile(fileName, fis)
Log.info("上传文件成功:"+fileName+"。文件保存路径:"+"/"+filepath+"/")
return bl
} catch (Exception e) {
throw e
} finally {
if (fis != null) {
try {
fis.close()
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e)
}
}
if (bos != null) {
try {
bos.close()
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e)
}
}
}
}
/**
*下载并解压文件
*
* @param localFilePath
* @param fileName
* @param routeFilepath
* @return
* @throws Exception
*/
public static String fileDownloadByFtp(String localFilePath, String fileName,String routeFilepath) throws Exception {
FileInputStream fis = null
ByteArrayOutputStream bos = null
FileOutputStream fos = null
FTPClient ftpClient = new FTPClient()
String SFP = System.getProperty("file.separator")
String bl = "false"
try {
Log.info("下载并解密文件开始")
Log.info("连接远程下载服务器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22)
ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22)
ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD)
CMBCUtil.CMBCLOGINPASSWORD)
FTPFile[] fs
ftpClient.makeDirectory(routeFilepath)
ftpClient.changeWorkingDirectory(routeFilepath)
bl = "false"
fs = ftpClient.listFiles()
for (FTPFile ff : fs) {
if (ff.getName().equals(fileName)) {
bl = "true"
Log.info("下载文件开始。")
ftpClient.setBufferSize(1024)
// 设置文件类型(二进制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE)
InputStream is = ftpClient.retrieveFileStream(fileName)
bos = new ByteArrayOutputStream(is.available())
byte[] buffer = new byte[1024]
int count = 0
while ((count = is.read(buffer)) != -1) {
bos.write(buffer, 0, count)
}
bos.flush()
fos = new FileOutputStream(localFilePath+SFP+fileName)
fos.write(bos.toByteArray())
Log.info("下载文件结束:"+localFilePath)
}
}
Log.info("检查文件是否存:"+fileName+" "+bl)
if("false".equals(bl)){
ViewUtil.dataSEErrorPerformedCommon("查询无结果,请稍后再查询。")
return bl
}
return bl
} catch (Exception e) {
throw e
} finally {
if (fis != null) {
try {
fis.close()
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e)
}
}
if (bos != null) {
try {
bos.close()
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e)
}
}
if (fos != null) {
try {
fos.close()
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e)
}
}
}
}
// 调用样例:
public static void main(String[] args) {
try {
// 明文文件路径
String plainFilePath = "D:/req_20150204_0011.txt"
// 密文文件路径
String secretFilePath = "req_20150204_00134.txt"
fileDownloadByFtp("D://123.zip","123.zip","req/20150228")
} catch (Exception e) {
e.printStackTrace()
}
}
}
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)