用字节流读入
import java.io.*;
class FileInputStreamDemo1 {
public static void main(String[] args) {
try {
File file = new File("test.txt"); //创建文件对象
//使用文件对象创建文件输入流对象
FileInputStream fis = new FileInputStream("d:\\aaa.txt");
for (int i = 0; i < file.length(); i++) {
char ch = (char)(fis.read()); //循环读取
System.out.println("第"+i+"个字节:"+(char)c);
}
System.out.println();
fis.close(); //关闭流
} catch (FileNotFoundException fnfe) {
System.out.println("文件打开失败。");
} catch (IOException ioe) {
ioe.printStackTrace();
}
}}
用字符流读入
import java.io.*;
class TestFileReader
{ public static void main(String args[]){
int c=0,i=0;
FileReader fr;
try { fr=new FileReader("d://aaa.txt");
while((c=fr.read())!=-1){i++;
System.out.println("第"+i+"个字符:"+(char)c);}
fr.close();
}catch(Exception e){}
}
}
如果aaa.txt的内容是“abcd”,则两个程序打印的结果安全相同。
第一个字节:a 第一个字符:a
。
这是为什么?
import java.io.*;
class FileInputStreamDemo1 {
public static void main(String[] args) {
try {
File file = new File("test.txt"); //创建文件对象
//使用文件对象创建文件输入流对象
FileInputStream fis = new FileInputStream("d:\\aaa.txt");
for (int i = 0; i < file.length(); i++) {
char ch = (char)(fis.read()); //循环读取
System.out.println("第"+i+"个字节:"+(char)c);
}
System.out.println();
fis.close(); //关闭流
} catch (FileNotFoundException fnfe) {
System.out.println("文件打开失败。");
} catch (IOException ioe) {
ioe.printStackTrace();
}
}}
用字符流读入
import java.io.*;
class TestFileReader
{ public static void main(String args[]){
int c=0,i=0;
FileReader fr;
try { fr=new FileReader("d://aaa.txt");
while((c=fr.read())!=-1){i++;
System.out.println("第"+i+"个字符:"+(char)c);}
fr.close();
}catch(Exception e){}
}
}
如果aaa.txt的内容是“abcd”,则两个程序打印的结果安全相同。
第一个字节:a 第一个字符:a
。
这是为什么?
你这句就把 那些 byte 按 char 算了
System.out.println(str.charAt(2)); // output c
这个或许能给你点启示
JAVA中
char是固定长度两个字节,也就是说char可以表示一个字母,或一个汉字
byte是固定长度,一个字节,也就是说byte可以表示一个字母,但不能表示汉字.
请参考 Java字符串与字符集的基本概念