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>
|
<groupId>commons-io</groupId>
|
||||||
<artifactId>commons-io</artifactId>
|
<artifactId>commons-io</artifactId>
|
||||||
<version>2.14.0</version>
|
<version>2.14.0</version>
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.commons</groupId>
|
<groupId>org.apache.commons</groupId>
|
||||||
|
|
|
@ -48,6 +48,8 @@ import java.util.HashSet;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.apache.commons.io.IOUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Specifies the format of a CSV file for parsing and writing.
|
* 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.Stream;
|
||||||
import java.util.stream.StreamSupport;
|
import java.util.stream.StreamSupport;
|
||||||
|
|
||||||
|
import org.apache.commons.io.function.Uncheck;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses CSV files according to the specified format.
|
* 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 current;
|
||||||
|
|
||||||
private CSVRecord getNextRecord() {
|
private CSVRecord getNextRecord() {
|
||||||
try {
|
return Uncheck.get(CSVParser.this::nextRecord);
|
||||||
return CSVParser.this.nextRecord();
|
|
||||||
} catch (final IOException e) {
|
|
||||||
throw new UncheckedIOException("Exception reading next record: " + e.toString(), e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -70,6 +70,19 @@ import java.util.stream.Stream;
|
||||||
*/
|
*/
|
||||||
public final class CSVPrinter implements Flushable, Closeable {
|
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. */
|
/** The place that the values get written. */
|
||||||
private final Appendable appendable;
|
private final Appendable appendable;
|
||||||
|
|
||||||
|
@ -300,7 +313,7 @@ public final class CSVPrinter implements Flushable, Closeable {
|
||||||
try {
|
try {
|
||||||
print(t);
|
print(t);
|
||||||
} catch (final IOException e) {
|
} catch (final IOException e) {
|
||||||
throw IOUtils.rethrow(e);
|
throw rethrow(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
println();
|
println();
|
||||||
|
@ -489,7 +502,7 @@ public final class CSVPrinter implements Flushable, Closeable {
|
||||||
try {
|
try {
|
||||||
printRecordObject(t);
|
printRecordObject(t);
|
||||||
} catch (final IOException e) {
|
} 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 java.util.stream.Stream;
|
||||||
|
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.apache.commons.io.output.NullOutputStream;
|
import org.apache.commons.io.output.NullOutputStream;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.h2.tools.SimpleResultSet;
|
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