1、访问文件夹中的文件
最近在做一些与文件相关的工作,将目前遇到的简单的文件操作用到的相关知识记录如下:
查看目标文件中所有的文件:
如:目标文件夹在:E:\Myworks\source;想要查看source文件夹下的所有文件
String filePath = "E:\\Myworks\\source";
File file = new File(filePath);
File[] f = file.listFiles();
上面代码将遍历所有的文件,不管是文件夹还是文件都会若想要获取文件夹中的文件还是文件夹,于是想要获取目标文件中的文件则可加一个判断
for(File f1:f){
if(fi.isFile()){
System.out.println("文件名为:"+f1.getName());
}
}
这样就可获取文件夹路径下的所有文件名,如果想获取文件夹名,将判断中的isFile()方法换成isDirectory()就行。
2、修改文件名的问题
Java提供了修改文件名的方法renameTo()方法,这里应当注意的是,renameTo()方法在不同的操作系统文件格式之间是有冲突的,这个时候不能使用renameTo(),renameTo()的作用不仅可以修改文件名称,也可以修改文件路径,相当于是将目前的文件在一个新的完整路径下创建出来,那么我们可以继续上面的代码:
String filePath = "E:\\Myworks\\source";
File file = new File(filePath);
File[] f = file.listFiles();
for(File f1:f){
if(f1.isFile()){
f1.renameTo(new File(filePath + "\\test\\"+f1.getName()))
}
}
以上代码就是将E:\Myworks\source路径下的所有文件存放到E:\Myworks\source\test文件夹下,这里我们需要注意:
1、renameTo方法是将文件创建到新的路径下
2、在本文件夹内修改名字,则直接可以在new File()内添加所想要修改的文件名
3、如果遇到只需要部分文件名情况下可以使用subString方法,如:f1.getName().subString(0,f1.getName().lastindexOf(“.”))则将扩展名前的名称获取
3、将文件复制粘贴到另一路径下
将文件从E:\Myworks\source路径复制粘贴到E:\Myworks\source\test路径下:
FileInputStream fis = FileInputStream("E:\\Myworks\\source");
FileOutputStream fos = FileOutputStream("E:\\Myworks\\source\\test");
byte[] buff = new byte[fis.available()];//创建一个缓存数组,将fis文件输入流存入该数组中
int len = 0;
while(len=(fis.read(buff)!=-1){
fos.write(buff,0,len);
}
fis.close();
fos.close();
这段代码实现了文件复制的功能,这里需要注意的是:
创建缓存数组byte[]用以保存读取输入流中的信息fis.available()表示该输入流可读入的所有字节量
fis.read(buff)表示,读入一个字节数组buff,并返回实际读入的字节数。表达的意思是,若byte[] buff = new byte[1024];则输入流fis的1024字节被读出给buff数组,并返回1024赋值给len。简而言之,就是按照字节数组buff的方式读取输入流fis。
接下来fos.write(buff,0,len)这个函数的意思是,将buff数组中,0偏移量,len长度的字节数写入fos中。
顺便讲一下while中的含义,表示的意思是,若输入流中还有可读字节数,则继续执行。无可读的字节数则返回-1.
就简单总结在这里,刚刚从事JAVA工作尚有很多不足之处,一并在这里记录总结。