您的位置:首页 > 编程语言 > Java开发

文件操作File

2016-04-03 11:24 225 查看
纸上得来终觉浅
1.java文件和文件夹的操作

public class abs{
public static void main(String[] args) {
/*文件操作*/
File myFile = new File("test.txt");
if(!myFile.exists()){
System.out.println("myfile:文件不存在");
try {
myFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("myfile创建成功");
}else{
System.out.println("myfile已经存在");
}
System.out.println("绝对路径:"+myFile.getAbsolutePath());
System.out.println("父级目录:"+new File(myFile.getAbsolutePath()).getParent());
System.out.println("相对路径:"+myFile.getPath());
System.out.println("文件名:"+myFile.getName());
System.out.println("是否文件夹:"+myFile.isDirectory());
System.out.println("是否文件:"+myFile.isFile());

System.out.println("是否可读:"+myFile.canRead());
System.out.println("是否可写:"+myFile.canWrite());
System.out.println();

/*在windows在文件可读性不能被设置为false,所以这里的设置失效,如果生效的话可读为false,可写为false*/
System.out.println("设置不可读"+myFile.setReadable(false));
System.out.println("是否可读:"+myFile.canRead());
System.out.println("是否可写:"+myFile.canWrite());
System.out.println();

System.out.println("设置可读"+myFile.setReadable(true));
System.out.println("设置不可写"+myFile.setWritable(false));
System.out.println("是否可读:"+myFile.canRead());
System.out.println("是否可写:"+myFile.canWrite());
System.out.println();

System.out.println("设置不可读"+myFile.setReadable(false));
System.out.println("设置可写"+myFile.setWritable(true));
System.out.println("是否可读:"+myFile.canRead());
System.out.println("是否可写:"+myFile.canWrite());
System.out.println();

System.out.println("设置只可读"+myFile.setReadOnly());
System.out.println("是否可读:"+myFile.canRead());
System.out.println("是否可写:"+myFile.canWrite());
System.out.println();

System.out.println("文件长度:"+myFile.length());
System.out.println("文件是否隐藏:"+myFile.isHidden());

System.out.println("输出数据前设置可写"+myFile.setWritable(true));
/*输出数据到文件*/
try {
FileOutputStream fileOutputStream = new FileOutputStream(myFile);
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream,"UTF-8");
BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);
bufferedWriter.write("白日依山尽\n");
bufferedWriter.write("黄河入海流\n");
bufferedWriter.write("欲穷千里目\n");
bufferedWriter.write("更上一层楼\n");
bufferedWriter.close();
outputStreamWriter.close();
fileOutputStream.close();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
System.out.println("文件长度:"+myFile.length());
System.out.println();

try {
FileInputStream fileInputStream = new FileInputStream(myFile);
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream,"UTF-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String line;
while((line = bufferedReader.readLine())!=null){
System.out.println(line);
}
bufferedReader.close();
inputStreamReader.close();
fileInputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

File myfile2 = new File("test2.txt");
myFile.renameTo(myfile2);

if(myFile.delete()){
System.out.println("旧文件删除成功");
}else{
System.out.println("旧文件删除失败");
if(myfile2.exists()){
myfile2.delete();
System.out.println("新文件删除成功");
}else{
System.out.println("新文件删除失败");
}
}

/*文件夹操作*/
File myFoder = new File("test");
if(!myFoder.exists()){
System.out.println("myFoder:文件夹不存在");
myFoder.mkdirs();
}else{
System.out.println("文件夹已经存在");
}

File myfoder2 = new File("test2");
myFoder.renameTo(myfoder2);

if(myFoder.delete()){
System.out.println("旧文件夹删除成功");
}else{
System.out.println("旧文件夹删除失败");
if(myfoder2.exists()){
myfoder2.delete();
System.out.println("新文件夹删除成功");
}else{
System.out.println("新文件夹删除失败");
}
}

//文件夹内部文件遍历
File myFoder3 = new File("src");
if(!myFoder3.exists()){
System.out.println("src文件夹不存在");
}else{
search(myFoder3,1);
}
}

public static void search(File file,int i){
String tab = "";
int i2 = i;
while(i2-->0){tab+="-";}
System.out.println(tab+file.getName());
if(!file.isFile()){
File newFile[] = file.listFiles();
i++;
for (int x = 0; x < newFile.length; x++) {
search(newFile[x],i);
}
}
}
}


下面是运行结果:





2.注意一下几点:

1) windows不可设置文件属性为不可读,所以上段代码设置不可读是失效。

2)windows  rename操作必须在同一个分区中。

3)设置属性之间的关系:

A: 如果设置了可写,一定是可读可写的。

B:如果设置了可读为真,可以是不可写的。

C:如果设置了可读为假,一定是不可读不可写的。

以上三点基于这样的命题即可:可读是可写必要条件

D:setReadable(true) +setWritable(false)等同于 setReadOnly
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 文件读写 File