import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class testinputstream {
public static void main(String[] args) throws IOException {
/**
public int read()
throws IOException从此输入流中读取一个数据字节。如果没有输入可用,则此方法将阻塞。
指定者:
类 InputStream 中的 read
返回:
下一个数据字节;如果已到达文件末尾,则返回 -1。
抛出:
IOException - 如果发生 I/O 错误。
解决:乱码
public int read(byte[] b)
throws IOException从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。在某些输入可用之前,此方法将阻塞。
覆盖:
类 InputStream 中的 read
参数:
b - 存储读取数据的缓冲区。
返回:
读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回 -1。
抛出:
IOException - 如果发生 I/O 错误
*/
FileInputStream fis = null;
int i = 0;
char c;
try {
fis = new FileInputStream("c:/baby.xml");
//File file = new File("c:/baby.xml");
//InputStream is = new FileInputStream(file);
//byte[] b = new byte[is.available()];
// is.read(b);
// System.out.println(new String(b));
//fis.read(b);
while ((i = fis.read()) != -1) {
c = (char) i;
System.out.print(c);
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
if (fis != null)
fis.close();
}
}
}
fileinputstream的read()方法读取文件中文乱码:java采用的是unicode编码,字符都是用两个字节表示的,中文都是两个字节,英文是一个字节,所以打印中文会乱码。
可以使用BufferedReader类来实现:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
public class inputstreamreadtest {
public static <FileInputStreams> void main(String[] args) {
File file = new File("c:/baby.xml");
FileReader in;
String str;
try {
in = new FileReader(file);
BufferedReader br = new BufferedReader(in);
while((str=br.readLine())!=null) {
System.out.println(str);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}