112=1 10^2 + 1 10^1 + 2 10^0
112 /10=112
11/10=11
1/10=01
12 = 1 2^3 + 1 2^2 + 0 2^1 + 0 2^0
12/2=60
6/2=30
3/2=11
1/2=01楼主要考虑的不仅仅是标题的需求。
1、复制数据库里所有的表和数据的目的是什么。
a、假设楼主是要做数据库备份的话,且通过程序来做的话,可以使用程序来执行dos命令
如java:RuntimegetRuntime()exec("e:\\MySQL\\bin\\mysqldump -h localhost -uroot -p123 db_name")
b、假设楼主是要做库与库之间的同步的话,可以使用第三方客户端进行,比如navicat,sqlyong等
c、假设楼主是要做库与库之间的同步且用程序进行的话,可以使用mysql中提供 *** 作数据库的api来做相对应的读取工作和对比工作,然后写入工作JAVA中读取文件内容的方法有很多,比如按字节读取文件内容,按字符读取文件内容,按行读取文件内容,随机读取文件内容等方法,本文就以上方法的具体实现给出代码,需要的可以直接复制使用
public class ReadFromFile {
/
以字节为单位读取文件,常用于读二进制文件,如、声音、影像等文件。
/
public static void readFileByBytes(String fileName) {
File file = new File(fileName);
InputStream in = null;
try {
Systemoutprintln("以字节为单位读取文件内容,一次读一个字节:");
// 一次读一个字节
in = new FileInputStream(file);
int tempbyte;
while ((tempbyte = inread()) != -1) {
Systemoutwrite(tempbyte);
}
inclose();
} catch (IOException e) {
eprintStackTrace();
return;
}
try {
Systemoutprintln("以字节为单位读取文件内容,一次读多个字节:");
// 一次读多个字节
byte[] tempbytes = new byte[100];
int byteread = 0;
in = new FileInputStream(fileName);
ReadFromFileshowAvailableBytes(in);
// 读入多个字节到字节数组中,byteread为一次读入的字节数
while ((byteread = inread(tempbytes)) != -1) {
Systemoutwrite(tempbytes, 0, byteread);
}
} catch (Exception e1) {
e1printStackTrace();
} finally {
if (in != null) {
try {
inclose();
} catch (IOException e1) {
}
}
}
}
/
以字符为单位读取文件,常用于读文本,数字等类型的文件
/
public static void readFileByChars(String fileName) {
File file = new File(fileName);
Reader reader = null;
try {
Systemoutprintln("以字符为单位读取文件内容,一次读一个字节:");
// 一次读一个字符
reader = new InputStreamReader(new FileInputStream(file));
int tempchar;
while ((tempchar = readerread()) != -1) {
// 对于windows下,\r\n这两个字符在一起时,表示一个换行。
// 但如果这两个字符分开显示时,会换两次行。
// 因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。
if (((char) tempchar) != '\r') {
Systemoutprint((char) tempchar);
}
}
readerclose();
} catch (Exception e) {
eprintStackTrace();
}
try {
Systemoutprintln("以字符为单位读取文件内容,一次读多个字节:");
// 一次读多个字符
char[] tempchars = new char[30];
int charread = 0;
reader = new InputStreamReader(new FileInputStream(fileName));
// 读入多个字符到字符数组中,charread为一次读取字符数
while ((charread = readerread(tempchars)) != -1) {
// 同样屏蔽掉\r不显示
if ((charread == tempcharslength)
&& (tempchars[tempcharslength - 1] != '\r')) {
Systemoutprint(tempchars);
} else {
for (int i = 0; i < charread; i++) {
if (tempchars[i] == '\r') {
continue;
} else {
Systemoutprint(tempchars[i]);
}
}
}
}
} catch (Exception e1) {
e1printStackTrace();
} finally {
if (reader != null) {
try {
readerclose();
} catch (IOException e1) {
}
}
}
}
/
以行为单位读取文件,常用于读面向行的格式化文件
/
public static void readFileByLines(String fileName) {
File file = new File(fileName);
BufferedReader reader = null;
try {
Systemoutprintln("以行为单位读取文件内容,一次读一整行:");
reader = new BufferedReader(new FileReader(file));
String tempString = null;
int line = 1;
// 一次读入一行,直到读入null为文件结束
while ((tempString = readerreadLine()) != null) {
// 显示行号
Systemoutprintln("line " + line + ": " + tempString);
line++;
}
readerclose();
} catch (IOException e) {
eprintStackTrace();
} finally {
if (reader != null) {
try {
readerclose();
} catch (IOException e1) {
}
}
}
}
/
随机读取文件内容
/
public static void readFileByRandomAccess(String fileName) {
RandomAccessFile randomFile = null;
try {
Systemoutprintln("随机读取一段文件内容:");
// 打开一个随机访问文件流,按只读方式
randomFile = new RandomAccessFile(fileName, "r");
// 文件长度,字节数
long fileLength = randomFilelength();
// 读文件的起始位置
int beginIndex = (fileLength > 4) 4 : 0;
// 将读文件的开始位置移到beginIndex位置。
randomFileseek(beginIndex);
byte[] bytes = new byte[10];
int byteread = 0;
// 一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。
// 将一次读取的字节数赋给byteread
while ((byteread = randomFileread(bytes)) != -1) {
Systemoutwrite(bytes, 0, byteread);
}
} catch (IOException e) {
eprintStackTrace();
} finally {
if (randomFile != null) {
try {
randomFileclose();
} catch (IOException e1) {
}
}
}
}
/
显示输入流中还剩的字节数
/
private static void showAvailableBytes(InputStream in) {
try {
Systemoutprintln("当前字节输入流中的字节数为:" + inavailable());
} catch (IOException e) {
eprintStackTrace();
}
}
public static void main(String[] args) {
String fileName = "C:/temp/newTemptxt";
ReadFromFilereadFileByBytes(fileName);
ReadFromFilereadFileByChars(fileName);
ReadFromFilereadFileByLines(fileName);
ReadFromFilereadFileByRandomAccess(fileName);
}
}你这是想把十六进制的文本转为真正的二进制文件。
你得有个工具能写入任意二进制数,windows下现成的工具极少。
网上有个能够用cscript存二进制文件的例子可以参考,低版本windows自带的的debug,可以生成二进制文件,但需要有点汇编语言的能力。
如果windows带有net framework可以自己写一个转换程序
或者使用十六进制编辑器winhex就可以反存回去。
如果不会写程序就得使用linux命令。下载cygwin,里面有xxd既可以正向查看,还可以反向恢复。FTP 是 TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写。该协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为“下载(download)”文件。若将文件从自己计算机中拷贝至远程计算机上,则称之为“上载(upload)”文件。在TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的 *** 作系统无关。假设两台计算机通过ftp协议对话,并且能访问Internet, 你可以用ftp命令来传输文件。每种 *** 作系统使用上有某一些细微差别,但是每种协议基本的命令结构是相同的。 FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式。 1.ASCII传输方式:假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。 但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝,不要对这些文件进行处理,这也是下面要讲的二进制传输。 2.二进制传输模式:在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。 如果你在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍微变慢 ,也会损坏数据,使文件变得不能用。(在大多数计算机上,ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果你传输二进制文件,所有的位都是重要的。)如果你知道这两台机器是同样的,则二进制方式对文本文件和数据文件都是有效的。 5 FTP的工作方式 FTP支持两种模式,一种方式叫做Standard (也就是 PORT方式,主动方式),一种是 Passive (也就是PASV,被动方式)。 Standard模式 FTP的客户端发送 PORT 命令到FTP服务器。Passive模式FTP的客户端发送 PASV命令到 FTP Server。 下面介绍一个这两种方式的工作原理: Port模式FTP 客户端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。 Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。FTP服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。 很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。Copy
该命令是文件拷贝命令。它有七种格式:
1.copy 源文件全名 目标文件全名
2.Copy 源文件全名 目标路径
3.Copy 源路径 目标路径
4.Copy 源路径 目标文件全名
5.Copy 源文件全名
6.Copy 源路径
7.Copy 文件全名1+文件全名2+文件全名3++文件全名n 目标文件全名(
不带通配符)
下面分别说明。
1.copy 源文件全名 目标文件全名
该格式把源文件全名指定的一个或一批文件拷贝到目标文件全名所指定的路
径里,新的文件名使用目标文件全名里指定的文件名。例如:
(1)copy c:workbas c:temptxt
该命令把c盘的work目录里所有扩展名为bas的文件拷贝到c盘的temp目录里,
所得到的每个文件的扩展名都变成了txt。
(2)copy datfiletxt
该命令把当前目录下的所有文件都拷贝到当前盘的根目录下的dat目录内的f
iletxt文件里,也就是说,把当前目录里的所有文件都合并成了一个文件。
(3)copy c:\workzrculibas a:\myfiletxt
该命令把c盘的work目录里的zrculibas文件拷贝到a盘里,并且重新起了个
文件名叫myfiletxt。
2.Copy 源文件全名 目标路径
该格式把源文件全名所指定的一个或一批文件拷贝到目标路径里,文件名保
持不变。
(1)copy c:\aaa
该命令把当前目录里的所有文件拷贝到c盘的aaa目录里。保持文件名不变。
(2)copy workzrculiexe a:
该命令把当前盘里的work目录里的zrculiexe拷贝到a盘根目录里。
(3)copy c:dataaa1031x c:dat1
该命令把c盘的dat目录里的文件aaa1031x拷贝到c盘的dat1目录里。
(4)copy a:
该命令把当前目录的父目录里的所有文件拷贝到a盘里。
3.Copy 源路径 目标路径
该格式把源路径所指定目录里的所有文件拷贝到目标路径所指定的目录里,
并且保持文件名不变。
(1)copy c:work
该命令把c盘的work目录里的所有文件拷贝到根目录里,因为work目录的父目
录是根目录。
(2)copy a: c:dat
该命令把a盘根目录里的所有文件拷贝到c盘的dat目录里。
4.Copy 源路径 目标文件全名
该格式把源路径所指定的目录里的所有文件拷贝到目标文件全名所指定的那
个目录里,并且把文件名改成目标文件全名所指定的文件名。
(1)copy c:work a:bak
该命令把c盘的work目录里的所有文件拷贝到a盘根目录,并且把所有文件的
扩展名改成bak。
(2)copy a:def c:datfiledat
该命令把a盘的def目录里的所有文件拷贝到c盘的dat目录里的filedat文件
里。就是说把a盘的def目录里的所有文件合并成了一个filedat文件。
(3)copy c:myfile d:datbbb
该命令把c盘的myfile目录里的文件全部拷贝到d盘的dat目录里,并且把文件
的主名全改成bbb。
5.Copy 源文件全名
该格式把源文件全名所指定的一个或多个文件拷贝到当前目录里来,保持文
件名不变。
6.Copy 源路径
该格式把源路径所指定的那个目录里的所有文件拷贝到当前目录里来,保持
文件名不变。
7.Copy 文件全名1+文件全名2+文件全名3++文件全名n 目标文件全名(
不带通配符)
该格式的功能是把文件全名1+文件全名2+文件全名3++文件全名n所指定的
n个文件合并成一个文件,放到目标文件全名所指定的目录里,新的文件名是目标
文件全名所指定的那个文件名。
Copy命令主要就这七种格式。它也有很多选项,不过对一般使用者来说用不
上,所以就不提了。感兴趣者可以用copy /来查看。
当用copy命令把一个或一批文件拷贝成另外的文件后,原来的那一个或一批文
件还在,不会丢失。
一个目录里不能出现同名文件。但是用copy命令任何一种格式拷贝文件时,
很有可能会在目标目录里产生同名文件,这种情况DOS怎么处理?这时,copy命令
会告诉你,出现了同名文件,并提供给你几种选择:1用新拷贝过来的文件代替
原有文件,2保留原有文件,新的和原有文件同名的文件将不被拷贝过来。3所
有同名的文件都用新文件代替。详细的提示信息和相应的 *** 作如下所述:
DOS的提示:
Overwrite "同名的文件" (YesNoAll)
意思是你要覆盖这个文件吗?你可以分别键入y,n,a代表选择了Yes,No,All。
如果键入了y,意思是“是的,我要用新文件来代替这个老文件”。如果选择了n
,意思是“不,我不想用新文件来代替这个老文件”。那么老文件将保留,新文
件将不被拷贝过来。注意前两个选择都只针对现在这个同名文件而言,接下来又
有同名文件的话,DOS还会再次询问。如果键入了a,意思是“是的,我要用新文
件来代替老文件,接下来再出现同名文件的话,我也是这个意思”。那么接下来
再出现同名文件的话,DOS就不会再提示了。当然,这个选择只是针对这一次cop
y *** 作而言。
如果你指定的源文件不存在的话,DOS会提示:
File not found--<文件名>
0 file(s) copied
如果你指定的源目录或目标目录不存在的话,DOS会提示:
Invalid directory!
五. Xcopy
这个命令也是文件拷贝命令。与copy的语法一样,最好用的一点是它有一个
选项“/s”
想一想copy命令,如果我们要把c:ddd目录里的所有内容包括文件和子目录拷贝
到另外的地方,我们得一个目录一个目录地分别拷贝。但是如果用xcopy的话,只
须在命令后面加个“/s”,该命令就会把源目录里所有的内容,包括源目录里一
切深度的子目录结构全部复制到目标目录里,最后的结果是目标目录里也有了和
源目录里一样的自目录结构。
六. Diskcopy
这个命令也是文件拷贝命令,专门用来将一张软盘上的所有内容完整地复制
到另一张软盘上。所以你得先准备一张源盘,就是你准备复制的那张盘。然后还
要有一张目标盘,用来把源盘上的内容复制到它上面。目标盘可以是新盘,也可
以是用过的盘。该命令的常用格式:
diskcopy a: a:
该命令首先提示你把源盘插入a驱动器。按照提示插好源盘后,按回车键,电
脑开始读源盘盘上的内容,读完后提示你将目标盘插入a驱动器。照提示做好后按
回车键,电脑开始往目标盘上写入从源盘读来的内容。写完后DOS会提示你写完了
,并问你是否要把源盘的内容写到另外一张目标盘上。如果你回答了y,那么就按
照接下来的提示往a驱动器里插入另外的目标盘,回车。如此循环往复,一张源盘
可以赋值很多张目标盘。如果你回答了n,那么diskcopy的执行就结束了。结果是
你的目标盘上的内容和源盘一模一样。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)