View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      https://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  
18  package org.apache.commons.io.input;
19  
20  import java.io.IOException;
21  import java.io.InputStream;
22  
23  /**
24   * Abstracts {@link UnixLineEndingInputStream} and {@link WindowsLineEndingInputStream} to reduce duplication.
25   */
26  abstract class AbstractLineEndingInputStream extends InputStream {
27  
28      boolean atEos;
29  
30      boolean atSlashCr;
31  
32      boolean atSlashLf;
33  
34      final InputStream in;
35  
36      final boolean lineFeedAtEos;
37  
38      /**
39       * Constructs an input stream that filters another stream
40       *
41       * @param inputStream   The input stream to wrap.
42       * @param lineFeedAtEos true to ensure that the file ends with LF.
43       */
44      AbstractLineEndingInputStream(final InputStream inputStream, final boolean lineFeedAtEos) {
45          this.in = inputStream;
46          this.lineFeedAtEos = lineFeedAtEos;
47      }
48  
49      /**
50       * Closes the stream. Also closes the underlying stream.
51       *
52       * @throws IOException If an I/O error occurs.
53       */
54      @Override
55      public void close() throws IOException {
56          super.close();
57          in.close();
58      }
59  
60      /**
61       * {@inheritDoc}
62       */
63      @Override
64      public synchronized void mark(final int readLimit) {
65          throw UnsupportedOperationExceptions.mark();
66      }
67  }