From 9b4433fddf5b401edb0aace8a404ac733b122702 Mon Sep 17 00:00:00 2001
From: 田源 <tianyuan@vci-tech.com>
Date: 星期四, 03 四月 2025 14:35:02 +0800
Subject: [PATCH] 添加非密字段显示

---
 Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/support/FastStringWriter.java |  255 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 255 insertions(+), 0 deletions(-)

diff --git a/Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/support/FastStringWriter.java b/Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/support/FastStringWriter.java
new file mode 100644
index 0000000..3adcada
--- /dev/null
+++ b/Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/support/FastStringWriter.java
@@ -0,0 +1,255 @@
+/*
+ *      Copyright (c) 2018-2028, DreamLu All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
+ */
+package org.springblade.core.tool.support;
+
+
+import org.springblade.core.tool.utils.StringPool;
+
+import java.io.IOException;
+import java.io.Writer;
+import java.util.Arrays;
+
+/**
+ * FastStringWriter锛屾洿鏀逛簬 jdk CharArrayWriter
+ *
+ * <p>
+ * 1. 鍘绘帀浜嗛攣
+ * 2. 鍒濆瀹归噺鐢� 32 鏀逛负 64
+ * </p>
+ *
+ * @author L.cm
+ */
+public class FastStringWriter extends Writer {
+	/**
+	 * The buffer where data is stored.
+	 */
+	private char[] buf;
+	/**
+	 * The number of chars in the buffer.
+	 */
+	private int count;
+
+	/**
+	 * Creates a new CharArrayWriter.
+	 */
+	public FastStringWriter() {
+		this(64);
+	}
+
+	/**
+	 * Creates a new CharArrayWriter with the specified initial size.
+	 *
+	 * @param initialSize an int specifying the initial buffer size.
+	 * @throws IllegalArgumentException if initialSize is negative
+	 */
+	public FastStringWriter(int initialSize) {
+		if (initialSize < 0) {
+			throw new IllegalArgumentException("Negative initial size: " + initialSize);
+		}
+		buf = new char[initialSize];
+	}
+
+	/**
+	 * Writes a character to the buffer.
+	 */
+	@Override
+	public void write(int c) {
+		int newCount = count + 1;
+		if (newCount > buf.length) {
+			buf = Arrays.copyOf(buf, Math.max(buf.length << 1, newCount));
+		}
+		buf[count] = (char) c;
+		count = newCount;
+	}
+
+	/**
+	 * Writes characters to the buffer.
+	 *
+	 * @param c   the data to be written
+	 * @param off the start offset in the data
+	 * @param len the number of chars that are written
+	 */
+	@Override
+	public void write(char[] c, int off, int len) {
+		if ((off < 0) || (off > c.length) || (len < 0) ||
+			((off + len) > c.length) || ((off + len) < 0)) {
+			throw new IndexOutOfBoundsException();
+		} else if (len == 0) {
+			return;
+		}
+		int newCount = count + len;
+		if (newCount > buf.length) {
+			buf = Arrays.copyOf(buf, Math.max(buf.length << 1, newCount));
+		}
+		System.arraycopy(c, off, buf, count, len);
+		count = newCount;
+	}
+
+	/**
+	 * Write a portion of a string to the buffer.
+	 *
+	 * @param str String to be written from
+	 * @param off Offset from which to start reading characters
+	 * @param len Number of characters to be written
+	 */
+	@Override
+	public void write(String str, int off, int len) {
+		int newCount = count + len;
+		if (newCount > buf.length) {
+			buf = Arrays.copyOf(buf, Math.max(buf.length << 1, newCount));
+		}
+		str.getChars(off, off + len, buf, count);
+		count = newCount;
+	}
+
+	/**
+	 * Writes the contents of the buffer to another character stream.
+	 *
+	 * @param out the output stream to write to
+	 * @throws IOException If an I/O error occurs.
+	 */
+	public void writeTo(Writer out) throws IOException {
+		out.write(buf, 0, count);
+	}
+
+	/**
+	 * Appends the specified character sequence to this writer.
+	 *
+	 * <p> An invocation of this method of the form <tt>out.append(csq)</tt>
+	 * behaves in exactly the same way as the invocation
+	 *
+	 * <pre>
+	 *     out.write(csq.toString()) </pre>
+	 *
+	 * <p> Depending on the specification of <tt>toString</tt> for the
+	 * character sequence <tt>csq</tt>, the entire sequence may not be
+	 * appended. For instance, invoking the <tt>toString</tt> method of a
+	 * character buffer will return a subsequence whose content depends upon
+	 * the buffer's position and limit.
+	 *
+	 * @param csq The character sequence to append.  If <tt>csq</tt> is
+	 *            <tt>null</tt>, then the four characters <tt>"null"</tt> are
+	 *            appended to this writer.
+	 * @return This writer
+	 */
+	@Override
+	public FastStringWriter append(CharSequence csq) {
+		String s = (csq == null ? StringPool.NULL : csq.toString());
+		write(s, 0, s.length());
+		return this;
+	}
+
+	/**
+	 * Appends a subsequence of the specified character sequence to this writer.
+	 *
+	 * <p> An invocation of this method of the form <tt>out.append(csq, start,
+	 * end)</tt> when <tt>csq</tt> is not <tt>null</tt>, behaves in
+	 * exactly the same way as the invocation
+	 *
+	 * <pre>
+	 *     out.write(csq.subSequence(start, end).toString()) </pre>
+	 *
+	 * @param csq   The character sequence from which a subsequence will be
+	 *              appended.  If <tt>csq</tt> is <tt>null</tt>, then characters
+	 *              will be appended as if <tt>csq</tt> contained the four
+	 *              characters <tt>"null"</tt>.
+	 * @param start The index of the first character in the subsequence
+	 * @param end   The index of the character following the last character in the
+	 *              subsequence
+	 * @return This writer
+	 * @throws IndexOutOfBoundsException If <tt>start</tt> or <tt>end</tt> are negative, <tt>start</tt>
+	 *                                   is greater than <tt>end</tt>, or <tt>end</tt> is greater than
+	 *                                   <tt>csq.length()</tt>
+	 */
+	@Override
+	public FastStringWriter append(CharSequence csq, int start, int end) {
+		String s = (csq == null ? StringPool.NULL : csq).subSequence(start, end).toString();
+		write(s, 0, s.length());
+		return this;
+	}
+
+	/**
+	 * Appends the specified character to this writer.
+	 *
+	 * <p> An invocation of this method of the form <tt>out.append(c)</tt>
+	 * behaves in exactly the same way as the invocation
+	 *
+	 * <pre>
+	 *     out.write(c) </pre>
+	 *
+	 * @param c The 16-bit character to append
+	 * @return This writer
+	 */
+	@Override
+	public FastStringWriter append(char c) {
+		write(c);
+		return this;
+	}
+
+	/**
+	 * Resets the buffer so that you can use it again without
+	 * throwing away the already allocated buffer.
+	 */
+	public void reset() {
+		count = 0;
+	}
+
+	/**
+	 * Returns a copy of the input data.
+	 *
+	 * @return an array of chars copied from the input data.
+	 */
+	public char[] toCharArray() {
+		return Arrays.copyOf(buf, count);
+	}
+
+	/**
+	 * Returns the current size of the buffer.
+	 *
+	 * @return an int representing the current size of the buffer.
+	 */
+	public int size() {
+		return count;
+	}
+
+	/**
+	 * Converts input data to a string.
+	 *
+	 * @return the string.
+	 */
+	@Override
+	public String toString() {
+		return new String(buf, 0, count);
+	}
+
+	/**
+	 * Flush the stream.
+	 */
+	@Override
+	public void flush() {
+	}
+
+	/**
+	 * Close the stream.  This method does not release the buffer, since its
+	 * contents might still be required. Note: Invoking this method in this class
+	 * will have no effect.
+	 */
+	@Override
+	public void close() {
+	}
+
+}

--
Gitblit v1.9.3