java文件操作 之 创建文件夹路径和新文件

一:问题

(1)java 的如果文件夹路径不存在,先创建;

(2)如果文件名 的文件不存在,先创建再读写;存在的话直接追加写,关键字true表示追加

(3)File myPath = new File(toFilePath);
   if ( !myPath.exists()){//若此目录不存在,则创建之// 这个东西只能简历一级文件夹,两级是无法建立的。。。。。
           myPath.mkdir();
           System.out.println("创建文件夹路径为:"+ toFilePath);
}
         如上代码只能创建一级目录,不能够创建二级目录;即只能创建当前级的目录,如果上一级目录还不存在,则创建失败;当然可以通过递归创建来解决这个问题

File myPath = new File(toFilePath); 仅仅是把路径传递给了File.java类的私有属性,请看源代码,并没有打开文件,所以不会抛出FileNotFoundException

(4) //写入文件名处理

                String fileN = toFilePath + "\\" + fileName;
            BufferedWriter writer = new BufferedWriter(new FileWriter(new File(fileN)));

       与下面的代码对比

File file=new File(originalPath);
                if(file.isFile() && file.exists()){ //判断文件是否存在
                InputStreamReader read = new InputStreamReader(
                new FileInputStream(file),encoding);//考虑到编码格式
                BufferedReader bufferedReader = new BufferedReader(read);

}

其实,FileWriter 是包装了(调用了) FileOutputStream()函数 源代码如下:所以两者有些类似的,只是stream可以过滤编码罢了

public FileWriter(File file) throws IOException {
        super(new FileOutputStream(file));
    }

二:代码实现

package edu.tju.cs;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.RandomAccessFile;


public class AllTest {
	
	/*public static void main(String[] args){
		System.out.println("****\\\\");
		String str = "a\\b\\b\\c.csv|aaaaa";
		String[] chars = str.split("\\\\");
		String[] fileName = chars[3].split("\\.");// u002e
		String[] tmp = chars[3].split("\\u007c");//  \\u007c
		for(String cha:chars){
			System.out.println(cha);
		}
		System.out.println(fileName[0]);
		System.out.println(tmp[1]);
	}*/
	
	 public static void main(String args[])
	 {
	    	StringBuffer fileBuf=new StringBuffer();
	    	String filePar = "d:\\test";// 文件夹路径
	    	File myPath = new File( filePar );
	        if ( !myPath.exists()){//若此目录不存在,则创建之
	            myPath.mkdir();
	            System.out.println("创建文件夹路径为:"+ filePar);
	        }
	        // 文件夹路径存在的情况下
	        String filename = "test.txt";// 文件名
			try {
				FileWriter fw = new FileWriter(filePar + "\\" + filename,true);// filePar + "\\" + filename,true
	        	// FileWriter 就是牛,如果文件名 的文件不存在,先创建再读写;存在的话直接追加写,关键字true表示追加
				String originalLine = "aaaaaaaaaa" + "\n";// 
	        	System.out.println("*** "+ originalLine);
	        	fw.write(originalLine);
	        	// 关闭写文件,每次仅仅写一行数据,因为一个读文件中仅仅一个唯一的od
	            fw.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	  }
}

总之, FileWriter 就是牛,如果文件名 的文件不存在,先创建再读写;存在的话直接追加写,关键字true表示追加   但是他只能一行一行的读写,不如代缓冲的读写效率高

java多种方式读文件,追加文件内容,对文件的各种操作请见:java多种方式读文件,追加文件内容,对文件的各种操作

你可能感兴趣的:(java,成长之路)