001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.commons.io.output;
018
019import java.io.Writer;
020
021/**
022 * This {@link Writer} writes all data to the famous <b>/dev/null</b>.
023 * <p>
024 * This <code>Writer</code> has no destination (file/socket etc.) and all
025 * characters written to it are ignored and lost.
026 *
027 * @version $Id: NullWriter.java 1471767 2013-04-24 23:24:19Z sebb $
028 */
029public class NullWriter extends Writer {
030
031    /**
032     * A singleton.
033     */
034    public static final NullWriter NULL_WRITER = new NullWriter();
035
036    /**
037     * Constructs a new NullWriter.
038     */
039    public NullWriter() {
040    }
041
042    /**
043     * Does nothing - output to <code>/dev/null</code>.
044     * @param c The character to write
045     * @return this writer
046     * @since 2.0
047     */
048    @Override
049    public Writer append(final char c) {
050        //to /dev/null
051        return this;
052    }
053
054    /**
055     * Does nothing - output to <code>/dev/null</code>.
056     * @param csq The character sequence to write
057     * @param start The index of the first character to write
058     * @param end  The index of the first character to write (exclusive)
059     * @return this writer
060     * @since 2.0
061     */
062    @Override
063    public Writer append(final CharSequence csq, final int start, final int end) {
064        //to /dev/null
065        return this;
066    }
067
068    /**
069     * Does nothing - output to <code>/dev/null</code>.
070     * @param csq The character sequence to write
071     * @return this writer
072     * @since 2.0
073     */
074    @Override
075    public Writer append(final CharSequence csq) {
076        //to /dev/null
077        return this;
078    }
079
080    /**
081     * Does nothing - output to <code>/dev/null</code>.
082     * @param idx The character to write
083     */
084    @Override
085    public void write(final int idx) {
086        //to /dev/null
087    }
088
089    /**
090     * Does nothing - output to <code>/dev/null</code>.
091     * @param chr The characters to write
092     */
093    @Override
094    public void write(final char[] chr) {
095        //to /dev/null
096    }
097
098    /**
099     * Does nothing - output to <code>/dev/null</code>.
100     * @param chr The characters to write
101     * @param st The start offset
102     * @param end The number of characters to write
103     */
104    @Override
105    public void write(final char[] chr, final int st, final int end) {
106        //to /dev/null
107    }
108
109    /**
110     * Does nothing - output to <code>/dev/null</code>.
111     * @param str The string to write
112     */
113    @Override
114    public void write(final String str) {
115        //to /dev/null
116    }
117
118    /**
119     * Does nothing - output to <code>/dev/null</code>.
120     * @param str The string to write
121     * @param st The start offset
122     * @param end The number of characters to write
123     */
124    @Override
125    public void write(final String str, final int st, final int end) {
126        //to /dev/null
127    }
128
129    /** @see java.io.Writer#flush() */
130    @Override
131    public void flush() {
132        //to /dev/null
133    }
134
135    /** @see java.io.Writer#close() */
136    @Override
137    public void close() {
138        //to /dev/null
139    }
140
141}