I/O
Posted xszddsz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了I/O相关的知识,希望对你有一定的参考价值。
流是传递数据的通道。有8位流和16位流
8位流:任何文件都可以传输
16位流:只处理文字
1.1 流的操作类(java.io)
1)File类,它指的不是文件,而是用来描述文件的路径和文件的周边信息(比如文件的大小,时间,权限)。既可以描述文件也可以描述夹子
2)File file=new File("");
(1)File(String pathname)-File //输入一个文件路径返回一个File对象
(2)File(URI uri)-File //输入网络地址返回一个File对象
(3)File(File parent,String child)-File//给一个父路径和子路径进行路径组合,返回一个File对象
(4)File(String parent,String child)-File//同上
注意: 本地文件访问斜杠 \
/ 网络访问斜杠
路径分为相对路径和绝对路径,使用相对路径移动比较方便。
File类的相关方法。
File file=new File("aaa.txt"); System.out.println(file.getName());//获得文件名字 file.isFile();//是不是文件路径 file.isDirectory();//是不是夹子路径 file.delete();//删除路径下的文件,如果是有内容的夹子就不会删除 file.deleteOnExit();//程序关闭之前就会删除,如果是非法关闭就不执行 file.lastModified();//最后修改时间 file.isHidden();//是不是隐藏文件路径 file.isAbsolute();//是不是绝对路径 file.getAbsolutePath();//获得决对路径 file.getAbsoluteFile(); file.canExecute();//对象能不能执行 file.canWrite();//能不能写 file.canRead();//能不能读
File类文件和夹子的创建。
/** * 文件创建 */ File file=new File("aaaaaaa.txt"); try { file.createNewFile(); } catch (IOException e) {//路径不存在或者没有权限在夹子里创建文件 e.printStackTrace(); } /** * 创建临时文件 */ try { File file1=File.createTempFile("kaige","xuetang"); } catch (IOException e) {//名字过短 e.printStackTrace(); } /** * 创建夹子 */ File file1=new File("aa"); //boolean b=file.mkdir();//创建一个夹子 boolean b=file1.mkdirs();//批量创建夹子 /** * 路径更改,相当于剪切把文件存到另一个路径中 */ File f=new File("一个文件de路径"); f.renameTo(new File("新的路径"));
/**
* 得到系统的根目录
*/
File[] files=File.listRoots();
for (File file : files) {
System.out.println(file.getPath());
}
注意:夹子是没有大小的,夹子算大小,就必须把它里面的文件全部计算一遍。
list();方法介绍。(列出当前目录下的所有文件和夹子)
返回字符串
list():String[]-File //
list(FileNameFilter filter):String [] -File //过滤器
返回File对象
listFiles();File[]-File
listFiles(FileFiter filter):File[]-File
listFiles(FilenameFilter filter):File[]-File
演示代码如下
File file=new File("F://"); /** * */ String[] filenames=file.list(); for (String filename : filenames) { File file1=new File(file,filename);//路径+名字判断文件是不是夹子 System.out.println(file1.isDirectory()); } File[] files=file.listFiles();//由于直接返回File对象,可以直接判断该文件是不是夹子 for (File file1 : files) { System.out.println(file1.isFile()); } /** * 每个文件都会询问,需要返回true,不要返回false; */ String[] files=file.list(new FilenameFilter() {//过滤器 @Override public boolean accept(File dir, String name) { File f=new File(dir,name); return f.isDirectory(); } }); for (String s : files) { System.out.println(s); } File[] files1=file.listFiles(new FilenameFilter() { @Override public boolean accept(File dir, String name) { return false; } }); File[] files2=file.listFiles(new FileFilter() { @Override public boolean accept(File pathname) { return false; } });
以上是关于I/O的主要内容,如果未能解决你的问题,请参考以下文章