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'。