public class Demo03 {
public static void main(String[] args) throws IOException{
get1("G:\JavaFile\读取二.txt");
}
//以utf-8的格式读取文件
public static char[] get1(File fi)throws IOException{
char[] ch=null;
BufferedReader reader=new BufferedReader(
new InputStreamReader(
new FileInputStream(fi)," utf-8")
);
CharArrayWriter writer=new CharArrayWriter();
char[] ch01=new char[2];
int len=0;
while((len=reader.read(ch01))!=-1)
{
writer.write(ch01, 0, len);
}
writer.flush();
ch=writer.toCharArray();
System.out.println(new String(ch));
reader.close();
return ch;
}
public static char[] get1(String str)throws IOException{
File fi=new File(str);
return get1(fi);
}
.txt文档的编码格式是ANSI的,你要把它改成utf-8才可以,你的程序中new FileInputStream(fi)," utf-8"),字符编码格式里多了一个空格。
这个程序报错是这样的
Exception in thread "main" java.io.UnsupportedEncodingException: utf-8
at sun.nio.cs.StreamDecoder.forInputStreamReader(Unknown Source)
at java.io.InputStreamReader.(Unknown Source)
at 字节数组流.Demo03.get1(Demo03.java:24)
at 字节数组流.Demo03.get1(Demo03.java:42)
at 字节数组流.Demo03.main(Demo03.java:18)
这是哪里错了呢
以下是修改后的正确代码
public class Demo03 {
public static void main(String[] args) throws IOException{
get1("G:\\JavaFile\\读取二.txt");
}
//以utf-8的格式读取文件
public static char[] get1(File fi)throws IOException{
char[] ch=null;
BufferedReader reader=new BufferedReader(
new InputStreamReader(
new FileInputStream(fi),"utf-8")
);
CharArrayWriter writer=new CharArrayWriter();
char[] ch01=new char[2];
int len=0;
while((len=reader.read(ch01))!=-1)
{
writer.write(ch01, 0, len);
}
writer.flush();
ch=writer.toCharArray();
System.out.println(new String(ch));
reader.close();
return ch;
}
public static char[] get1(String str)throws IOException{
File fi=new File(str);
return get1(fi);
}
}
请大神指出错在哪里,在下感激不尽,还是编译器的问题吗,求大神指点
话说get1的参数类型不是file吗……你整个字符串是要闹哪样
好吧……下面还有个重载的……
首先,有编译错误的。get1("G:\JavaFile\读取二.txt");这行代码。
“\"反斜杠是转义字符,不能直接用,文件路径中要么用正斜杠"/",要么用两个反斜杠"//"。
把txt文档另存为的时候最下面一行有编码格式,可以修改为utf-8.