谁可以用java.exe是什么?写一个病毒,可以做到感染电脑里面的文件使文件打开成为乱码,求代码!!!!

使用JDK自带的解压zip或jar工具时,如果文件名称有汉字,解压文件时就会出错
该案例重写了JDK的几个核心类,解决了此问题,使用该案例之前请首先现在我们
重写过的几个类文件。
下载地址:http://www.blackswansoft.com/songhaikang/files/myfile/myzip.rar
import file.zip.myzip.MyZipE
import file.zip.myzip.MyZipInputS
* 解压zip或jar文件
* 支持编码设置
* @author shk
*/
public class UnZip {
public static void main(String args[]) {
new UnZip().unZip("c:\temps\zip压缩.zip","C:\temps\zip压缩2","GB2312");
* 解压zip或jar文件
* @param sourcePath 源文件
* @param savePath&& 解压后存放位置
* @param encoding&& 文件编码
public void unZip(String sourcePath, String savePath,String encoding){
File sourceFile = new File(sourcePath);
ZipFile zipFile = new ZipFile(sourceFile);
System.out.println("该压缩文件内的条目数为:"+zipFile.size());
} catch (ZipException e1) {
System.out.println("该文件不是一个zip文件");
} catch (IOException e1) {
System.out.println("读取文件时出错");
File saveFilePath = new File(savePath);
sourcePath = sourceFile.getAbsolutePath();
System.out.println("将" + sourcePath + "& 解压到" + saveFilePath.getAbsolutePath());
if (!sourceFile.isFile()){
System.out.println(sourcePath + "文件不存在");
String zipFileName = sourceFile.getName();
System.out.println(zipFileName + "开始解压");
if (!saveFilePath.isDirectory()){
saveFilePath.mkdirs(); // 创建放置解压后文件的目录
MyZipInputStream in = new MyZipInputStream(new FileInputStream(sourceFile),encoding);//读取源文件
FileOutputS
byte buf[] = new byte[1024]; // 解压缓冲区
MyZipEntry zipE // 获取压缩文件中的文件或目录
String zipEntryN
File file,
while ((zipEntry = in.getNextEntry()) != null) {
zipEntryName = zipEntry.getName();
System.out.println(zipFileName + "/" + zipEntryName + "&& 被解压");
if (zipEntry.isDirectory()){ // 如果读出的是目录
new File(saveFilePath, zipEntryName).mkdirs();//创建目录
file = new File(saveFilePath, zipEntryName);//创建文件
// 如果读出的这个文件所在目录尚未创建
parent = file.getParentFile();
if (!parent.exists()){
parent.mkdirs();
// 如果该文件已存在,直接覆盖
// 如果该文件不存在,自动创建
out = new FileOutputStream(file);
while ((len = in.read(buf, 0, 1024)) != -1){
out.write(buf, 0, len);
out.close();
in.close();
System.out.println(zipFileName + "& 解压完毕");
} catch (Exception e) {
e.printStackTrace();
System.out.println(zipFileName + "& 解压失败");
用java开发的一款功能强大的开源的远程控制软件,最近又升级了,添加了许多使用的功能,而且代码也有了很大程度的优化。可以实现生成服务器、修改上线主机名称、屏幕监视,屏幕控制、主动连接、上传文件、下载文件、 远程命令、远程任务管理器、发送警告、相互聊天、换皮肤、版本升级提醒等功能,通过该软件可以实现用一台电脑同时控制多台电脑,也可以多台电脑控制同一台电脑等。
软件官方网站下载地址:
软件如下图所示:
songhaikang
浏览: 22383 次
来自: 上海
你傻吗? 这是源码吗?
depravedangel 写道没有看到源码的连接,下载下来的 ...
depravedangel 写道看到了,只能算是共享软件吧,不 ...
看到了,只能算是共享软件吧,不能称之为开源,呵呵,不过不错,比 ...
没有看到源码的连接,下载下来的是jar
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'java文件中文乱码问题_百度知道
java文件中文乱码问题
我用myeclipse写了一个action文件MyUpAction.java,但是一输入中文就乱码无法保存,部分代码如下:privateStringcontentT//灏佽涓娄紶鏂囦欢镄勭被鍨嫔睘镐�priva...
我用myeclipse写了一个action文件MyUpAction.java,但是一输入中文就乱码无法保存,部分代码如下:
private String contentT// 灏佽涓娄紶鏂囦欢镄勭被鍨嫔睘镐� private String fileN// 灏佽涓娄紶鏂囦欢镄勫悕绉板睘镐� private String targetFileN// 淇濆瓨鏂囦欢鍚岖О灞炴�� private S// 淇濆瓨鏂囦欢璺缎灞炴
String targetDirectory = realP
if (fileName == null || &&.equals(fileName.trim())) {
this.addFieldError(&doc&, &鏂囦欢涓嶈兘涓虹┖锛�&);
} 请问该如何解决
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
来自电脑网络类芝麻团
采纳数:3069
获赞数:26435
参与团队:
读取文件的时候如果是用的read方法(字节流),碰到中文输出就是乱码,然后存储的时候设置下编码为GBK或者是UTF-8形式即可,可以有效的解决乱码问题。可以通过BufferedReader 流的形式进行流缓存,之后通过readLine方法获取到缓存的内容。&BufferedReader bre =try {String file = &D:/test/test.txt&;bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环{System.out.println(str);//原样输出读到的内容};备注: 流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。可以通过“FileOutputStream”创建文件实例,之后过“OutputStreamWriter”流的形式进行存储,举例:OutputStreamWriter pw =//定义一个流pw = new OutputStreamWriter(new FileOutputStream(“D:/test.txt”),&GBK&);//确认流的输出文件和编码格式,此过程创建了“test.txt”实例pw.write(&我是要写入到记事本文件的内容&);//将要写入文件的内容,可以多次writepw.close();//关闭流备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。
来自电脑网络类芝麻团
采纳数:191
获赞数:758
参与团队:
选中你的文件--右击--属性(properties)--text file encoding
有个default和other
这里选other 然后选UTF-8(你默认的可能是ISO-8859-1的) 然后你把文件中的乱码改回中文
保存~ 这次就不乱码了~
本回答被提问者采纳
为了明天time
为了明天time
window--&prefernence--&general--&Content Types--&Text--&java Source file Default Encoding
改成utf-8试试.......
采纳数:1209
获赞数:6388
这个问题不是文件的问题,而是项目属性的编码配置的问题。myeclipse有默认的项目编码属性,我记得应该是iso-8859-1吧,这种编码不支持中文,所以保存以后就会出现乱码。但每个项目都能设置自己单独的文件编码,你的这种情况,就是这种工程编码没有设置对的情况。你在工程属性里找找,有地方是设置这个的,改成GB2312、GBK或者UTF8就可以了。(我只在很多年轻用过两次myeclipse,现在都忘了在哪里改了)
采纳数:179
获赞数:232
是文件的编码格式有问题!把文件的编码变成utf-8的右键你的文件 找属性 找编码
程序右键,属性,然后改成utf-8
采纳数:22
获赞数:40
擅长:暂未定制
中文编码 方式有问题 改 文字输出的编码格式 或者更改浏览器的 读取编码格式
楼下的有解答
其他5条回答
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。&Java读取UTF-8的txt文件第一行出现乱码&?&及解决
test.txt文件内容:A中2国3456
test.txt文件采用写字板保存为UTF-8格式保存并关闭后使用写字板再次打开该UTF-8文档,中文、字母正常显示
测试代码:
import&java.io.BufferedR&&
import&java.io.F&&
import&java.io.FileInputS&&
import&java.io.InputStreamR&&
public&class&ReadTxtFile&{&&
&&&&public&static&void&main(String[]&args)&{&&
&&&&&&&&try&{&&
&&&&&&&&&&&&String&charsetName&=&"UTF-8";&&&
&&&&&&&&&&&&String&path&=&"D:/to_delete/test.txt";&&
&&&&&&&&&&&&File&file&=&new&File(path);&&
&&&&&&&&&&&&if&(file.isFile()&&&&file.exists())&&&
&&&&&&&&&&&&{&&
&&&&&&&&&&&&&&&&InputStreamReader&insReader&=&new&InputStreamReader(&&
&&&&&&&&&&&&&&&&&&&&&&&&new&FileInputStream(file),&charsetName);&&
&&&&&&&&&&&&&&&&BufferedReader&bufReader&=&new&BufferedReader(insReader);&&
&&&&&&&&&&&&&&&&String&line&=&new&String();&&
&&&&&&&&&&&&&&&&while&((line&=&bufReader.readLine())&!=&null)&{&&
&&&&&&&&&&&&&&&&&&&&System.out.println(line);&&
&&&&&&&&&&&&&&&&}&&
&&&&&&&&&&&&&&&&bufReader.close();&&
&&&&&&&&&&&&&&&&insReader.close();&&
&&&&&&&&&&&&}&&
&&&&&&&&}&catch&(Exception&e)&{&&
&&&&&&&&&&&&System.out.println("读取文件内容操作出错");&&
&&&&&&&&&&&&e.printStackTrace();&&
&&&&&&&&}&&
程序执行结果:?A中2国3456
我的解决办法:
使用UltraEdit将上边的txt文件另存为UTF-8无BOM格式;
使用Notepad++打开上边的txt文件执行如下操作&格式--&以UTF-8无BOM格式编码&,修改后将txt文本进行保存。
网上有篇非常好的文章,论述了问题出现的原因及解决办法
关键字: java 读utf-8, java写utf-8, 编码, utf-8 乱码
最近在处理文件时发现了同样类型的文件使用的编码可能是不同的。所以想将文件的格式统一一下(因为UTF-8的通用性,决定往UTF-8统一),遇见的第一个问题是:如何查看现有文件的编码方式。&上网找了一下,找到几篇比较好文章,这里就不转载啦把链接搞过来。&&&&&上面的几篇文章可以看成认识编码问题的&从入门到精通&&如果你看完了上面的文章,一定了解到了,在java中,class文件采用utf8的编码方式,JVM运行时采用utf16。Java的字符串是永远都是unicode的,采用的是UTF-16的编码方式。&想测试一下,java对UTF-8文件的读写的能力,结果发现了一个很郁闷的问题,如果通过java写的UTF-8文件,使用Java可以正确的读,但是如果用记事本将相同的内容使用UTF-8格式保存,则在使用程序读取是会从文件中多读出一个不可见字符。&测试代码如下:&
import&java.io.BufferedR &&
import&java.io.F &&
import&java.io.FileInputS &&
import&java.io.IOE &&
import&java.io.InputStreamR &&
public&class&UTF8Test&{ &&
&&&&public&static&void&main(String[]&args)&throws&IOException&{ &&
&&&&&&&&File&f&&=&new&File("./utf.txt"); &&
&&&&&&&&FileInputStream&in&=&new&FileInputStream(f); &&
&&&&&&&&&&
&&&&&&&&BufferedReader&br&=&new&BufferedReader(new&InputStreamReader(in,&"UTF-8")); &&
&&&&&&&& &&
&&&&&&&&String&line&=&br.readLine(); &&
&&&&&&&&while(line&!=&null) &&
&&&&&&&&{ &&
&&&&&&&&&&&&System.out.println(line); &&
&&&&&&&&&&&&line&=&br.readLine(); &&
&&&&&&&&} &&
import&java.io.BufferedR&&
import&java.io.F&&
import&java.io.FileInputS&&
import&java.io.IOE&&
import&java.io.InputStreamR&&
public&class&UTF8Test&{&&
&&&&public&static&void&main(String[]&args)&throws&IOException&{&&
&&&&&&&&File&f&&=&new&File("./utf.txt");&&
&&&&&&&&FileInputStream&in&=&new&FileInputStream(f);&&
&&&&&&&&&&
&&&&&&&&BufferedReader&br&=&new&BufferedReader(new&InputStreamReader(in,&"UTF-8"));&&
&&&&&&&&&&
&&&&&&&&String&line&=&br.readLine();&&
&&&&&&&&while(line&!=&null)&&
&&&&&&&&{&&
&&&&&&&&&&&&System.out.println(line);&&
&&&&&&&&&&&&line&=&br.readLine();&&
&&&&&&&&}&&
utf.txt通过记事本创建,另存时使用指定utf-8编码,其内容为:&
This is the first line.&This is second line.&
正常的测试结果应该是直接输出utf.txt的文本内容。可是实际上却输出了下面的内容:&
?This is the first line.&This is second line.&
第一行多出了一个问号。&通过上面的几篇文章应该可以想到是Java读取BOM(Byte Order Mark)的问题,在使用UTF-8时,可以在文件的开始使用3个字节的"EF BB BF"来标识文件使用了UTF-8的编码,当然也可以不用这个3个字节。&上面的问题应该就是因为对开头3个字节的读取导致的。开始不太相信这个是JDK的Bug,后来在多次试验后,问题依然存在,就又狗狗了一下,果然找到一个如下的Bug:&&不过在我关掉的一些页面中记得有篇文件说这个bug只在jdk1.5及之前的版本才有,说是1.6已经解决了,从目前来看1.6只是解决了读取带有BOM文件失败的问题,还是不能区别处理有BOM和无BOM的UTF-8编码的文件,从Bug ID:4508058里的描述可以看出,这个问题将作为一个不会修改的问题关闭,对于BOM编码的识别将由应用程序自己来处理,原因可从另处一个bug处查看到,因为Unicode对于BOM的编码的规定可能发生变化。也就是说对于一个UTF-8的文件,应用程序需要知道这个文件有没有写BOM,然后自己决定处理BOM的方式。&在上面的while循环中可加入下面的代码,测试一下读出内容:&
byte[]&allbytes&=&line.getBytes("UTF-8");& &&
&&&&&&&&&&&&for&(int&i=0;&i&&&allbytes.&i++) &&
&&&&&&&&&&&&{ &&
&&&&&&&&&&&&&&&&int&tmp&=&allbytes[i]; &&
&&&&&&&&&&&&&&&&String&hexString&=&Integer.toHexString(tmp); &&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&hexString&=&hexString.substring(hexString.length()&-2); &&
&&&&&&&&&&&&&&&&System.out.print(hexString.toUpperCase()); &&
&&&&&&&&&&&&&&&&System.out.print("&"); &&
&&&&&&&&&&&&}&&
byte[]&allbytes&=&line.getBytes("UTF-8");&&&
&&&&&&&&&&&&for&(int&i=0;&i&&&allbytes.&i++)&&
&&&&&&&&&&&&{&&
&&&&&&&&&&&&&&&&int&tmp&=&allbytes[i];&&
&&&&&&&&&&&&&&&&String&hexString&=&Integer.toHexString(tmp);&&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&hexString&=&hexString.substring(hexString.length()&-2);&&
&&&&&&&&&&&&&&&&System.out.print(hexString.toUpperCase());&&
&&&&&&&&&&&&&&&&System.out.print("&");&&
&&&&&&&&&&&&}&&
输出结果如下:&
EF BB BF&54 68 69 73 20 69 73 20 74 68 65 20 66 69 72 73 74 20 6C 69 6E 65 2E&?This is the first line.&54 68 69 73 20 69 73 20 73 65 63 6F 6E 64 20 6C 69 6E 65 2E&This is second line.&
红色部分的"EF BB BF"刚好是UTF-8文件的BOM编码,可以看出Java在读文件时没能正确处理UTF-8文件的BOM编码,将前3个字节当作文本内容来处理了。&使用链接中提供的代码可以解决碰到的乱码问题:&&
阅读(...) 评论()在上篇博客中LZ阐述了java各个渠道转码的过程,阐述了java在运行过程中那些步骤在进行转码,在这些转码过程中如果一处出现问题就很有可能会产生乱码!下面LZ就讲述java在转码过程中是如何来进行编码和解码操作的。编码&解码 在上篇博客中LZ阐述了三个渠道的编码转换过程,下面LZ将结束java在那些场合需要进行编码和解码操作,并详序中间的过程,进一步掌握java的编码和解码过程。在java中主要有四个场景需要进行编码解码操作: 1:I/O操作 2:内存 3:数据库 4:javaWeb 下面主要介绍前面两种场景,数据库部分只要设置正确编码格式就不会有什么问题,javaWeb场景过多需要了解URL、get、POST的编码,servlet的解码,所以javaWeb场景下节LZ介绍。I/O操作 在前面LZ就提过乱码问题无非就是转码过程中编码格式的不统一产生的,比如编码时采用UTF-8,解码采用GBK,但最根本的原因是字符到字节或者字节到字符的转换出问题了,而这中情况的转换最主要的场景就是I/O操作的时候。当然I/O操作主要包括网络I/O(也就是javaWeb)和磁盘I/O。网络I/O下节介绍。 首先我们先看I/O的编码操作。 InputStream为字节输入流的所有类的超类,Reader为读取字符流的抽象类。java读取文件的方式分为按字节流读取和按字符流读取,其中InputStream、Reader是这两种读取方式的超类。 按字节 我们一般都是使用InputStream.read()方法在数据流中读取字节(read()每次都只读取一个字节,效率非常慢,我们一般都是使用read(byte[])),然后保存在一个byte[]数组中,最后转换为String。在我们读取文件时,读取字节的编码取决于文件所使用的编码格式,而在转换为String过程中也会涉及到编码的问题,如果两者之间的编码格式不同可能会出现问题。例如存在一个问题test.txt编码格式为UTF-8,那么通过字节流读取文件时所获得的数据流编码格式就是UTF-8,而我们在转化成String过程中如果不指定编码格式,则默认使用系统编码格式(GBK)来解码操作,由于两者编码格式不一致,那么在构造String过程肯定会产生乱码,如下:
File file = new File("C:\\test.txt");
InputStream input = new FileInputStream(file);
StringBuffer buffer = new StringBuffer();
byte[] bytes = new byte[1024];
for( (n = input.read(bytes))!=-1 ; ){
buffer.append(new String(bytes,0,n));
System.out.println(buffer); 输出结果:锘挎垜鏄?cm test.txt中的内容为:我是 cm。 要想不出现乱码,在构造String过程中指定编码格式,使得编码解码时两者编码格式保持一致即可:buffer.append(new String(bytes,0,n,"UTF-8")); 按字符 其实字符流可以看做是一种包装流,它的底层还是采用字节流来读取字节,然后它使用指定的编码方式将读取字节解码为字符。在java中Reader是读取字符流的超类。所以从底层上来看按字节读取文件和按字符读取没什么区别。在读取的时候字符读取每次是读取留个字节,字节流每次读取一个字节。 字节&字符转换 字节转换为字符一定少不了InputStreamReader。API解释如下:InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。 每次调用 InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。API解释非常清楚,InputStreamReader在底层读取文件时仍然采用字节读取,读取字节后它需要根据一个指定的编码格式来解析为字符,如果没有指定编码格式则采用系统默认编码格式。String file = "C:\\test.txt";
String charset = "UTF-8";
// 写字符换转成字节流
FileOutputStream outputStream = new FileOutputStream(file);
OutputStreamWriter writer = new OutputStreamWriter(outputStream, charset);
writer.write("我是 cm");
} finally {
writer.close();
// 读取字节转换成字符
FileInputStream inputStream = new FileInputStream(file);
InputStreamReader reader = new InputStreamReader(
inputStream, charset);
StringBuffer buffer = new StringBuffer();
char[] buf = new char[64];
int count = 0;
while ((count = reader.read(buf)) != -1) {
buffer.append(buf, 0, count);
} finally {
reader.close();
System.out.println(buffer);内存 首先我们看下面这段简单的代码
String s = "我是 cm";
byte[] bytes = s.getBytes();
String s1 = new String(bytes,"GBK");
String s2 = new String(bytes); 在这段代码中我们看到了三处编码转换过程(一次编码,两次解码)。先看String.getTytes():public byte[] getBytes() {
return StringCoding.encode(value, 0, value.length);
} 内部调用StringCoding.encode()方法操作:static byte[] encode(char[] ca, int off, int len) {
String csn = Charset.defaultCharset().name();
// use charset name encode() variant which provides caching.
return encode(csn, ca, off, len);
} catch (UnsupportedEncodingException x) {
warnUnsupportedCharset(csn);
return encode("ISO-8859-1", ca, off, len);
} catch (UnsupportedEncodingException x) {
// If this code is hit during VM initialization, MessageUtils is
// the only way we will be able to get any kind of error message.
MessageUtils.err("ISO-8859-1 charset not available: "
+ x.toString());
// If we can not find ISO-8859-1 (a required encoding) then things
// are seriously wrong with the installation.
System.exit(1);
} encode(char[] paramArrayOfChar, int paramInt1, int paramInt2)方法首先调用系统的默认编码格式,如果没有指定编码格式则默认使用ISO-8859-1编码格式进行编码操作,进一步深入如下:String csn = (charsetName == null) ? "ISO-8859-1" : charsetN 同样的方法可以看到new String 的构造函数内部是调用StringCoding.decode()方法:public String(byte bytes[], int offset, int length, Charset charset) {
if (charset == null)
throw new NullPointerException("charset");
checkBounds(bytes, offset, length);
this.value =
StringCoding.decode(charset, bytes, offset, length);
} decode方法和encode对编码格式的处理是一样的。 对于以上两种情况我们只需要设置统一的编码格式一般都不会产生乱码问题。编码&编码格式 首先先看看java编码类图[1] 首先根据指定的chart设置ChartSet类,然后根据ChartSet创建ChartSetEncoder对象,最后再调用 CharsetEncoder.encode 对字符串进行编码,不同的编码类型都会对应到一个类中,实际的编码过程是在这些类中完成的。下面时序图展示详细的编码过程: 通过这编码的类图和时序图可以了解编码的详细过程。下面将通过一段简单的代码对ISO-8859-1、GBK、UTF-8编码public class Test02 {
public static void main(String[] args) throws UnsupportedEncodingException {
String string = "我是 cm";
Test02.printChart(string.toCharArray());
Test02.printChart(string.getBytes("ISO-8859-1"));
Test02.printChart(string.getBytes("GBK"));
Test02.printChart(string.getBytes("UTF-8"));
* char转换为16进制
public static void printChart(char[] chars){
for(int i = 0 ; i & chars. i++){
System.out.print(Integer.toHexString(chars[i]) + " ");
System.out.println("");
* byte转换为16进制
public static void printChart(byte[] bytes){
for(int i = 0 ; i & bytes. i++){
String hex = Integer.toHexString(bytes[i] & 0xFF);
if (hex.length() == 1) {
hex = '0' +
System.out.print(hex.toUpperCase() + " ");
System.out.println("");
-------------------------outPut:
3F 3F 20 63 6D
CE D2 CA C7 20 63 6D
E6 88 91 E6 98 AF 20 63 6D 通过程序我们可以看到“我是 cm”的结果为: char[]: 63 6d ISO-F 3F 20 63 6D
GBK:CE D2 CA C7 20 63 6D
UTF-8:E6 88 91 E6 98 AF 20 63 6D 图如下:更多&参考文献 对于这两种场景我们只需要设置一致正确的编码一般都不会产生乱码问题,通过LZ上面的阐述对于java编码解码的过程应该会有一个比较清楚的认识。其实在java中产生乱码的主要场景是在javaWeb中,所以LZ下篇博文就来讲解javaWeb中的乱码产生情形。1、Java 编程技术中汉字问题的分析及解决:。-----原文出自:,请尊重作者辛勤劳动成果,转载说明出处.-----个人站点:
解析Java中文乱码的处理方法
【Java】中文乱码不再乱
罕见的问题:StringCoding.java
没有更多推荐了,

我要回帖

更多关于 .java勒索病毒 的文章

 

随机推荐