为什么下面代码不能识别汉字?(关于输入输出流)
import java.util.*;
import java.io.*;
public class Concatenate {
public static void main(String[] args) throws IOException {
ListOfFiles mylist = new ListOfFiles(args);
File outputFile = new File("result.txt");
SequenceInputStream s = new SequenceInputStream(mylist);
FileWriter out = new FileWriter(outputFile);
int c;
while ((c = s.read()) != -1)
out.write(c);
s.close();
out.close();
}
}
class ListOfFiles implements Enumeration {
private String[] listOfFiles;
private int current = 0;
public ListOfFiles(String[] listOfFiles) {
this.listOfFiles = listOfFiles;
}
public boolean hasMoreElements() {
if (current < listOfFiles.length)
return true;
else
return false;
}
public Object nextElement() {
InputStream in = null;
if (!hasMoreElements())
throw new NoSuchElementException("No more files.");
else {
String nextElement = listOfFiles[current];
current++;
try {
in = new FileInputStream(nextElement);
} catch (FileNotFoundException e) {
System.err.println("ListOfFiles: Can't open " + nextElement);
}
}
return in;
}
}
程序是把两个文本的内容连接到一个新建的文本里面
执行的时候
java Concatenate 第一个文件 第二个文件
如果是英文还可以,但是如果是汉字,它就在生成的result.txt中显示乱码
还有下面另外一个几乎一样的代码(两个不同的地方,都已经标出),却能够在系统中显示汉字,这是为什么?是java本身的问题吗?还是编码方式变了?请高手帮忙解答,小弟不胜感激!
import java.util.*;
import java.io.*;
public class Concatenate {
public static void main(String[] args) throws IOException {
ListOfFiles mylist = new ListOfFiles(args);
File outputFile = new File("result.txt");
SequenceInputStream s = new SequenceInputStream(mylist);
FileWriter out = new FileWriter(outputFile);
int c;
while ((c = s.read()) != -1)
System.out.write(c); // 不同之处
s.close();
//out.close(); // 不同之处
}
}
class ListOfFiles implements Enumeration {
private String[] listOfFiles;
private int current = 0;
public ListOfFiles(String[] listOfFiles) {
this.listOfFiles = listOfFiles;
}
public boolean hasMoreElements() {
if (current < listOfFiles.length)
return true;
else
return false;
}
public Object nextElement() {
InputStream in = null;
if (!hasMoreElements())
throw new NoSuchElementException("No more files.");
else {
String nextElement = listOfFiles[current];
current++;
try {
in = new FileInputStream(nextElement);
} catch (FileNotFoundException e) {
System.err.println("ListOfFiles: Can't open " + nextElement);
}
}
return in;
}
}