FileInputStream 是从文件输入
- 文件必须存在
- read方法返回的是读取字节的长度
import java.io.File; import java.io.InputStream; import java.io.FileInputStream; import java.io.OutputStream; import java.io.FileOutputStream; import java.io.IOException; /** * @Lin 2018.5.7 测试 */ public class FileInputStreamTest { public static void main(String[] args) throws IOException { byte[] b1 = new byte[]{1, 2, 3}; File file = new File("./text/hello.txt"); if(file.exists()) { } else { file.createNewFile(); } FileInputStream ism = new FileInputStream(file); byte[] b = new byte[1024]; int len = ism.read(b); // 读取文件保存到 b 数组 String str = new String(b, 0, len); System.out.println(len + " " + str); ism.close(); } }
Console: 9 很好的 #表示“很好的”是9个字节
FileOutputStream 是输出到文件
import java.io.IOException; import java.io.File; import java.io.FileOutputStream; public class FileOutPutStreamTest { /** * @Lin 2018.5.8 */ public static void main(String[] args) throws IOException { FileOutputStream fos = new FileOutputStream(new File("./text/out.txt"), true); byte[] b = new byte[]{1}; // fos.write(97); fos.write("\r\na".getBytes()); fos.write("你好".getBytes()); fos.close(); } }
1.创建对象的时候添加append参数为true可以继续添加而不会覆盖。
2. \r\n是Linux下的换行。主要是编码方式, 而且Windows上的记事本只认"\r\n", 如果是“\n”是不会换行的。
3. 使用String.getBytes()是很好的选择。
4. 如果只是 fos.write(97); 则输出到文件的不是97,而是ASCII码对应的字母 'a'。