黑马程序员技术交流社区
标题:
【石家庄校区】I/O字符流学习总结
[打印本页]
作者:
superhello
时间:
2019-5-7 15:31
标题:
【石家庄校区】I/O字符流学习总结
知识点总结
File类的概述和构造方法
概念:文件和目录的抽象表示
构造方法
new File("完整路径");
File f1 = new File("D:\\这个是练习\\1.txt");
System.out.println(f1.createNewFile());
new File("目录",“文件”);
File f2 = new File("D:\\这个是练习", "2.txt");
System.out.println(f2.createNewFile());
File file1=new File("目录") File file2=new File(file1,"文件");
File f3 = new File("D:\\这个是练习");
File f4 = new File(f3, "3.txt");
System.out.println(f4.createNewFile());
File类创建类方法
创建文件:createNewFile();
目录:mkdir() ;
File f0 = new File("D:\\这个是练习");
System.out.println(f0.mkdir());
多级目录:mkdirs()
File f5 = new File("D:\\这个是练习\\这个也是练习");
System.out.println(f5.mkdirs());
File类的判断和获取方法
判断是否是目录:isDirectory()
System.out.println(f0.isDirectory());
判断是否是文件:isFile()
System.out.println(f0.isFile());
判断文件或目录是否存在:exists()
System.out.println(f0.exists());
名字:getName()
System.out.println(f0.getName());
路径:getPath()
System.out.println(f6.getPath());
全路径:getAbsolutePath()
System.out.println(f6.getAbsolutePath());
获取目录下文件名:list()
String[] list = f0.list();
for (String s : list) {
System.out.println(s);
}
获取目录下文件:listFiles()
File[] files = f0.listFiles();
for (File file : files) {
System.out.println(file);
}
File类删除
删除文件:delete()删除目录时,目录必须为空
不死神兔例子
public static int Rabbit(int n) {
int[] arr = new int[n];
if (n == 1 || n == 2) {
return 1;
} else {
arr[0] = 1;
arr[1] = 1;
arr[n - 1] = Rabbit(n-1) + Rabbit(n-2);
}
return arr[n - 1];
}
}
阶乘
public static int chengFa(int n) {
if (n == 1) {
return 1;
} else {
return n * chengFa(n - 1);
}
}
流概述
概念:数据传输的总成
分类: 输入流 输出流
工作方式:字节流 字符流
字节流写数据
字节输出流:OutPutStream() FileOutPutStream("文件的路径")
FileOutputStream fo = new FileOutputStream("C:\\Users\\Admin\\Desktop\\Tale.mp4");
字节形式写数据:write() write(byte[]) write(byte[],off,len)
FileOutputStream fo = new FileOutputStream("day17\\Tale.txt");
FileInputStream fi = new FileInputStream("day17\\Tale.txt");
fo.write((84 + "").getBytes());
fo.write(11);
fo.write(11085);
/*fo.write(84);
fo.write(97);
fo.write("l".getBytes());
byte[] b = {97, 98, 99, 100, 101};
fo.write(b, 4, 1);*/
byte[] by = new byte[1];
System.out.println((char) (fi.read()));//8
System.out.println(fi.read());//52
System.out.println(fi.read());//11
System.out.println(fi.read());//M
释放资源:close()
fo.close();
fi.close();
字节流写数据的两个小问题
换行:/r/n
for (int i = 0; i < 10; i++) {
fos.write("hello".getBytes());
fos.write("\r\n".getBytes());
}
如何进行追加写:new FileOutPutStream("文件的路径",true)
FileOutputStream fo = new FileOutputStream("C:\\Users\\Admin\\Desktop\\Tale.mp4",true);
finally try catch后必须要执行的代码块,做关闭资源的操作
try {
fos = new FileOutputStream("myByteStream\\fos.txt");
fos.write("hello".getBytes());
} catch (IOException e) {
e.printStackTrace();
} finally {
if(fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
字节流读取数据
字节输入流对象:InputStream() FileInputStream("")
FileInputStream fi = new FileInputStream("F:\\英雄时刻\\Desktop\\Desktop 2019.03.27 - 14.21.19.02.DVR.mp4");
读数据的方法:read() 当-1时代表文件到结尾 read(byte[])返回值实际读取数据的长度,-1代表数据读取完成
int i;
while ((i = fi.read(b)) != -1) {
fo.write(b, 0, i);
}
释放资源:close()
fi.close();
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2