本文整理匯總了Java中java.nio.charset.CodingErrorAction.IGNORE屬性的典型用法代碼示例。如果您正苦於以下問題:Java CodingErrorAction.IGNORE屬性的具體用法?Java CodingErrorAction.IGNORE怎麽用?Java CodingErrorAction.IGNORE使用的例子?那麽, 這裏精選的屬性代碼示例或許可以為您提供幫助。您也可以進一步了解該屬性所在類java.nio.charset.CodingErrorAction
的用法示例。
在下文中一共展示了CodingErrorAction.IGNORE屬性的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。
示例1: ResettableFileInputStream
/**
*
* @param file
* File to read
*
* @param tracker
* PositionTracker implementation to make offset position durable
*
* @param bufSize
* Size of the underlying buffer used for input. If lesser than {@link #MIN_BUF_SIZE},
* a buffer of length {@link #MIN_BUF_SIZE} will be created instead.
*
* @param charset
* Character set used for decoding text, as necessary
*
* @param decodeErrorPolicy
* A {@link DecodeErrorPolicy} instance to determine how
* the decoder should behave in case of malformed input and/or
* unmappable character.
*
* @throws FileNotFoundException If the file to read does not exist
* @throws IOException If the position reported by the tracker cannot be sought
*/
public ResettableFileInputStream(File file, PositionTracker tracker,
int bufSize, Charset charset, DecodeErrorPolicy decodeErrorPolicy)
throws IOException {
this.file = file;
this.tracker = tracker;
this.in = new FileInputStream(file);
this.chan = in.getChannel();
this.buf = ByteBuffer.allocateDirect(Math.max(bufSize, MIN_BUF_SIZE));
buf.flip();
this.byteBuf = new byte[1]; // single byte
this.charBuf = CharBuffer.allocate(2); // two chars for surrogate pairs
charBuf.flip();
this.fileSize = file.length();
this.decoder = charset.newDecoder();
this.position = 0;
this.syncPosition = 0;
if (charset.name().startsWith("UTF-8")) {
// some JDKs wrongly report 3 bytes max
this.maxCharWidth = 4;
} else if (charset.name().startsWith("UTF-16")) {
// UTF_16BE and UTF_16LE wrongly report 2 bytes max
this.maxCharWidth = 4;
} else if (charset.name().startsWith("UTF-32")) {
// UTF_32BE and UTF_32LE wrongly report 4 bytes max
this.maxCharWidth = 8;
} else {
this.maxCharWidth = (int) Math.ceil(charset.newEncoder().maxBytesPerChar());
}
CodingErrorAction errorAction;
switch (decodeErrorPolicy) {
case FAIL:
errorAction = CodingErrorAction.REPORT;
break;
case REPLACE:
errorAction = CodingErrorAction.REPLACE;
break;
case IGNORE:
errorAction = CodingErrorAction.IGNORE;
break;
default:
throw new IllegalArgumentException(
"Unexpected value for decode error policy: " + decodeErrorPolicy);
}
decoder.onMalformedInput(errorAction);
decoder.onUnmappableCharacter(errorAction);
seek(tracker.getPosition());
}