Reuse Commons IO
This commit is contained in:
parent
8c4ecf734e
commit
04b2773bae
1
pom.xml
1
pom.xml
|
@ -51,7 +51,6 @@
|
|||
<groupId>commons-io</groupId>
|
||||
<artifactId>commons-io</artifactId>
|
||||
<version>2.14.0</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
|
|
|
@ -48,6 +48,8 @@ import java.util.HashSet;
|
|||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.commons.io.IOUtils;
|
||||
|
||||
/**
|
||||
* Specifies the format of a CSV file for parsing and writing.
|
||||
*
|
||||
|
|
|
@ -47,6 +47,8 @@ import java.util.stream.Collectors;
|
|||
import java.util.stream.Stream;
|
||||
import java.util.stream.StreamSupport;
|
||||
|
||||
import org.apache.commons.io.function.Uncheck;
|
||||
|
||||
/**
|
||||
* Parses CSV files according to the specified format.
|
||||
*
|
||||
|
@ -144,11 +146,7 @@ public final class CSVParser implements Iterable<CSVRecord>, Closeable {
|
|||
private CSVRecord current;
|
||||
|
||||
private CSVRecord getNextRecord() {
|
||||
try {
|
||||
return CSVParser.this.nextRecord();
|
||||
} catch (final IOException e) {
|
||||
throw new UncheckedIOException("Exception reading next record: " + e.toString(), e);
|
||||
}
|
||||
return Uncheck.get(CSVParser.this::nextRecord);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -70,6 +70,19 @@ import java.util.stream.Stream;
|
|||
*/
|
||||
public final class CSVPrinter implements Flushable, Closeable {
|
||||
|
||||
/**
|
||||
* Throws the given throwable.
|
||||
*
|
||||
* @param <T> The throwable cast type.
|
||||
* @param throwable The throwable to rethrow.
|
||||
* @return nothing because we throw.
|
||||
* @throws T Always thrown.
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
private static <T extends Throwable> RuntimeException rethrow(final Throwable throwable) throws T {
|
||||
throw (T) throwable;
|
||||
}
|
||||
|
||||
/** The place that the values get written. */
|
||||
private final Appendable appendable;
|
||||
|
||||
|
@ -300,7 +313,7 @@ public final class CSVPrinter implements Flushable, Closeable {
|
|||
try {
|
||||
print(t);
|
||||
} catch (final IOException e) {
|
||||
throw IOUtils.rethrow(e);
|
||||
throw rethrow(e);
|
||||
}
|
||||
});
|
||||
println();
|
||||
|
@ -489,7 +502,7 @@ public final class CSVPrinter implements Flushable, Closeable {
|
|||
try {
|
||||
printRecordObject(t);
|
||||
} catch (final IOException e) {
|
||||
throw IOUtils.rethrow(e);
|
||||
throw rethrow(e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,147 +0,0 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF 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 org.apache.commons.csv;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Reader;
|
||||
import java.io.Writer;
|
||||
import java.nio.Buffer;
|
||||
import java.nio.CharBuffer;
|
||||
|
||||
/** Copied from Apache Commons IO. */
|
||||
final class IOUtils {
|
||||
|
||||
/**
|
||||
* The default buffer size ({@value}).
|
||||
*/
|
||||
static final int DEFAULT_BUFFER_SIZE = 1024 * 4;
|
||||
|
||||
/**
|
||||
* Represents the end-of-file (or stream).
|
||||
*/
|
||||
private static final int EOF = -1;
|
||||
|
||||
/**
|
||||
* Copies chars from a large (over 2GB) {@code Reader} to an {@code Appendable}.
|
||||
* <p>
|
||||
* This method buffers the input internally, so there is no need to use a
|
||||
* {@code BufferedReader}.
|
||||
* </p>
|
||||
* The buffer size is given by {@link #DEFAULT_BUFFER_SIZE}.
|
||||
*
|
||||
* @param input the {@code Reader} to read from
|
||||
* @param output the {@code Appendable} to append to
|
||||
* @return the number of characters copied
|
||||
* @throws NullPointerException if the input or output is null
|
||||
* @throws IOException if an I/O error occurs
|
||||
* @since 2.7
|
||||
*/
|
||||
static long copy(final Reader input, final Appendable output) throws IOException {
|
||||
return copy(input, output, CharBuffer.allocate(DEFAULT_BUFFER_SIZE));
|
||||
}
|
||||
|
||||
/**
|
||||
* Copies chars from a large (over 2GB) {@code Reader} to an {@code Appendable}.
|
||||
* <p>
|
||||
* This method uses the provided buffer, so there is no need to use a
|
||||
* {@code BufferedReader}.
|
||||
* </p>
|
||||
*
|
||||
* @param input the {@code Reader} to read from
|
||||
* @param output the {@code Appendable} to write to
|
||||
* @param buffer the buffer to be used for the copy
|
||||
* @return the number of characters copied
|
||||
* @throws NullPointerException if the input or output is null
|
||||
* @throws IOException if an I/O error occurs
|
||||
* @since 2.7
|
||||
*/
|
||||
static long copy(final Reader input, final Appendable output, final CharBuffer buffer) throws IOException {
|
||||
long count = 0;
|
||||
int n;
|
||||
while (EOF != (n = input.read(buffer))) {
|
||||
((Buffer) buffer).flip();
|
||||
output.append(buffer, 0, n);
|
||||
count += n;
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
/**
|
||||
* Copies chars from a large (over 2GB) {@code Reader} to a {@code Writer}.
|
||||
* <p>
|
||||
* This method buffers the input internally, so there is no need to use a
|
||||
* {@code BufferedReader}.
|
||||
* </p>
|
||||
* <p>
|
||||
* The buffer size is given by {@link #DEFAULT_BUFFER_SIZE}.
|
||||
* </p>
|
||||
*
|
||||
* @param input the {@code Reader} to read from
|
||||
* @param output the {@code Writer} to write to
|
||||
* @return the number of characters copied
|
||||
* @throws NullPointerException if the input or output is null
|
||||
* @throws IOException if an I/O error occurs
|
||||
* @since 1.3
|
||||
*/
|
||||
static long copyLarge(final Reader input, final Writer output) throws IOException {
|
||||
return copyLarge(input, output, new char[DEFAULT_BUFFER_SIZE]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Copies chars from a large (over 2GB) {@code Reader} to a {@code Writer}.
|
||||
* <p>
|
||||
* This method uses the provided buffer, so there is no need to use a
|
||||
* {@code BufferedReader}.
|
||||
* </p>
|
||||
*
|
||||
* @param input the {@code Reader} to read from
|
||||
* @param output the {@code Writer} to write to
|
||||
* @param buffer the buffer to be used for the copy
|
||||
* @return the number of characters copied
|
||||
* @throws NullPointerException if the input or output is null
|
||||
* @throws IOException if an I/O error occurs
|
||||
* @since 2.2
|
||||
*/
|
||||
static long copyLarge(final Reader input, final Writer output, final char[] buffer) throws IOException {
|
||||
long count = 0;
|
||||
int n;
|
||||
while (EOF != (n = input.read(buffer))) {
|
||||
output.write(buffer, 0, n);
|
||||
count += n;
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
/**
|
||||
* Throws the given throwable.
|
||||
*
|
||||
* @param <T> The throwable cast type.
|
||||
* @param throwable The throwable to rethrow.
|
||||
* @return nothing because we throw.
|
||||
* @throws T Always thrown.
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
static <T extends Throwable> RuntimeException rethrow(final Throwable throwable) throws T {
|
||||
throw (T) throwable;
|
||||
}
|
||||
|
||||
/** No instances. */
|
||||
private IOUtils() {
|
||||
// Noop
|
||||
}
|
||||
|
||||
}
|
|
@ -61,6 +61,7 @@ import java.util.Vector;
|
|||
import java.util.stream.Stream;
|
||||
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.commons.io.output.NullOutputStream;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.h2.tools.SimpleResultSet;
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF 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 org.apache.commons.csv;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertThrowsExactly;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
public class IOUtilsTest {
|
||||
|
||||
@Test
|
||||
public void testRethrow() {
|
||||
assertThrowsExactly(IOException.class, () -> IOUtils.rethrow(new IOException()));
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue