//以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;
}
是不是导包错了,我这边可以运行的
package org.tarena;
import java.io.BufferedReader;
import java.io.CharArrayWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test {
public static char[] get1(File fi)throws IOException{
char[] ch=null;
BufferedReader bf=new BufferedReader(new InputStreamReader(
new FileInputStream(fi)," utf-8"));
// FileInputStream fis = new FileInputStream(fi);
// InputStreamReader isr = new InputStreamReader(fis, "utf-8");
// BufferedReader bf = new BufferedReader(isr);
CharArrayWriter writer=new CharArrayWriter();
char[] ch01=new char[2];
int len=0;
while((len=bf.read(ch01))!=-1)
{
writer.write(ch01, 0, len);
}
writer.flush();
ch=writer.toCharArray();
System.out.println(new String(ch));
bf.close();
return ch;
}
public static void main(String[] args) {
File file = new File("./netctoss.sql");
try {
char[] cha = Test.get1(file);
System.out.println(cha);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
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)
eclipse报这样的错什么意思
真正的编码类型是"utf-8",你给出的代码前面有个空格,成了" utf-8",这样当然会报错了,没有这个编码类型。
utf-8前面有个空格 删了
就是楼上说的你的"utf-8"多了个空格的原因