一、FileInputStream字节输入流,读取文件内容。
例:
package io.pinttai;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class MyInputStream {
public static void main(String[] args) {
String name="F:"+File.separator+"test.txt";
System.out.println(readStrFormFile(name));
}
public static String readStrFormFile(String fileName) {
try {
FileInputStream fis=new FileInputStream(fileName);
byte[] bytes;
bytes = new byte[fis.available()];
fis.read(bytes);
String content=new String(bytes);
fis.close();
return content;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
读的技巧:
读取部分字节 fis.read(bytes,off,len),其中off为起点,len为读取长度。也可以fis.skip(long n)从输入流中跳过并丢弃n个字节的数据,再fis.read(bytes,0,7)来读取。
注意,这里如果是读取中文,UTF-8 的中文占3个字节,而gbk和UTF16的中文占2个字节。
二、FileOutputStream,字节输出流,写入。
例:
package io.pinttai;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class MyOutputStream {
public static void main(String[] args) throws IOException {
String fileName="F:"+File.separator+"test.txt";
String content="my name is:\r\n"+"hello";
setFile(fileName, content);
}
public static void setFile(String fileName,String content) throws IOException{
FileOutputStream fileOutputStream=new FileOutputStream(fileName);
fileOutputStream.write(content.getBytes());
fileOutputStream.close();
}
}
如果是追加内容,FileOutputStream fileOutputStream=new FileOutputStream(fileName,true);即可。
写的技巧:
将指定byte数组从偏移量off开始的len个字节写入此输出流write(byte[],inf off,int len);
void flush();//刷新此输出流,并强制将所有已缓冲的输出字节写入该流中;
\r\n是换行写入。
三、缓冲式的字节输入输出流:BufferedInputStream和BufferedOutputStream,方法同上。只不过引入了缓冲区,效率更高。