集册 Java实例教程 为指定文件打开FielOutPoSt流,如果不存在父目录,则检查并创建该父目录。

为指定文件打开FielOutPoSt流,如果不存在父目录,则检查并创建该父目录。

欢马劈雪     最近更新时间:2020-01-02 10:19:05

566
为指定文件打开FielOutPoSt流,如果不存在父目录,则检查并创建该父目录。
/**来自 
 时代Java公众号 - N o w J a  v a . c o m**/

/**

 * Licensed to Jasig under one or more contributor license

 * agreements. See the NOTICE file distributed with this work

 * for additional information regarding copyright ownership.

 * Jasig licenses this file to you under the Apache License,

 * Version 2.0 (the "License"); you may not use this file

 * except in compliance with the License. You may obtain a

 * copy of the License at:

 *

 * http://www.apache.org/licenses/LICENSE-2.0

 *

 * Unless required by applicable law or agreed to in writing,

 * software distributed under the License is distributed on

 * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

 * KIND, either express or implied. See the License for the

 * specific language governing permissions and limitations

 * under the License.

 */

//package com.nowjava;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;


public class Main {

    public static void main(String[] argv) throws Exception {

        File file = new File("Main.java");

        System.out.println(openOutputStream(file));

    }


    /**

     * Opens a {@link FileOutputStream} for the specified file, checking and

     * creating the parent directory if it does not exist.

     * <p>

     * At the end of the method either the stream will be successfully opened,

     * or an exception will have been thrown.

     * <p>

     * The parent directory will be created if it does not exist.

     * The file will be created if it does not exist.

     * An exception is thrown if the file object exists but is a directory.

     * An exception is thrown if the file exists but cannot be written to.

     * An exception is thrown if the parent directory cannot be created.

     * 

     * @param file  the file to open for output, must not be <code>null</code>

     * @return a new {@link FileOutputStream} for the specified file

     * @throws IOException if the file object is a directory

     * @throws IOException if the file cannot be written to

     * @throws IOException if a parent directory needs creating but that fails

     * @since Commons IO 1.3

     */

    static FileOutputStream openOutputStream(File file) throws IOException {

        if (file.exists()) {

            if (file.isDirectory()) {

                throw new IOException("File '" + file

                        + "' exists but is a directory");

            }// 来 自 NowJava.com - 时代Java

            if (file.canWrite() == false) {

                throw new IOException("File '" + file

                        + "' cannot be written to");

            }

        } 
展开阅读全文