数据源和程序之间交互的管道叫做IO流,主要用来处理设备之间的数据传输
用来抽象的表示文件或文件夹,这个File不一定存在。代表着java和资源的一个关联
/***
* @author bincai
* @email [email protected]
*/
public class No2_BuildFile {
public static void main(String[] args) {
// 通过将给定路径名字符串转换成抽象路径名来创建一个新 File 实例.
File file = new File("/Users/caibin/IOstudy/timg.jpeg");
System.out.println(file.length());
// 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例.
File file2 = new File("/Users/caibin/IOstudy", "timg.jpeg");
System.out.println(file2.length());
// 通过给定的父抽象路径名和子路径名字符串创建一个新的File实例.
File file3 = new File(new File("/Users/caibin/IOstudy"), "timg.jpeg");
System.out.println(file3.length());
try {
// 通过将给定的 file: URI 转换成一个抽象路径名来创建一个新的 File 实例.
URI url = new URI("file", null, "/Users/caibin/IOstudy/timg.jpeg", null, null);
File file4 = new File(url);
System.out.println(file4.length());
} catch (Exception e) {
System.out.println(e);
}
}
}
处理流使用的是装饰器设计模式,对节点流进行增强。
处理流的重要特征:
等等。。。
public class No6_EnDecode {
public static void main(String[] args) throws IOException {
String input = "io流";
//编码 默认的字符集是根据项目配置来的
byte[] byte1 = input.getBytes();
System.out.println(byte1.length);
//使用指定字符集编码
byte[] byte2 = input.getBytes("gbk");
System.out.println(byte2.length);
//解码
String output = new String(byte1);
System.out.println(output);
//乱码1 字节数不够,导致乱码
String output2 = new String(byte1,0,byte1.length-1);
System.out.println(output2);
//乱码2 字符集不一致
String output3 = new String(byte1,"gbk");
System.out.println(output3);
}
}
<dependencies>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.3</version>
</dependency>
</dependencies>
public class No100_Commonsio {
public static void main(String[] args) {
// 统计文件的大小
long fileSize = FileUtils.sizeOf(new File("timg.jpeg"));
System.out.println(fileSize);
// 统计目录的大小
long directroySize = FileUtils.sizeOf(new File("directory"));
System.out.println(directroySize);
}
}
// 递归子集
Collection<File> son = FileUtils.listFiles(new File("directory"), EmptyFileFilter.NOT_EMPTY, null);
for(File file : son){
System.out.println(file.getAbsolutePath());
}
// 递归子孙集
Collection<File> all = FileUtils.listFiles(new File("directory"), EmptyFileFilter.NOT_EMPTY, DirectoryFileFilter.INSTANCE);
for(File file : all){
System.out.println(file.getAbsolutePath());
}
String msg = FileUtils.readFileToString(new File("out.txt"),"UTF-8");
System.out.println(msg);
byte[] msgByte = FileUtils.readFileToByteArray(new File("out.txt"));
System.out.println(msgByte.length);
//逐行读取
List<String> msgs = FileUtils.readLines(new File("out.txt"),"UTF-8");
for(String line : msgs){
System.out.println(line);
}
//写出文件
FileUtils.write(new File("write.txt"),"蔡","UTF-8");
//最后一个参数是追加
FileUtils.writeStringToFile(new File("write.txt"),"小","UTF-8",true);
FileUtils.writeByteArrayToFile(new File("write.txt"),"彬".getBytes("UTF-8"),true);
//写出列表
List<String> msgList = new ArrayList<String>();
msgList.add("第");
msgList.add("一");
FileUtils.writeLines(new File("write.txt"),msgList,"/",true);
public class No101_CommonsIO_02 {
public static void main(String[] args) throws Exception {
// 拷贝文件到文件
FileUtils.copyFile(new File("timg.jpeg"), new File("timg-copy.jpeg"));
// 拷贝文件到目录
FileUtils.copyFileToDirectory(new File("timg.jpeg"), new File("dest"));
// 复制目录及子孙所有文件到目录
FileUtils.copyDirectoryToDirectory(new File("directory"), new File("dest"));
//复制目录下的文件到另外一个目录
FileUtils.copyDirectory(new File("directory"), new File("dest"));
//拷贝url到文件
FileUtils.copyURLToFile(new URL("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1540034625381&di=419a1f10036b4421ae95a4ac5dbd9b07&imgtype=0&src=http%3A%2F%2Fpic31.nipic.com%2F20130728%2F7447430_145214729000_2.jpg"), new File("url.jpg"));
}
}