如何在 Android 的 StringBuffer 中连接长字符串
How to concatenate long String in StringBuffer for Android
我在 StringBuffer 连接中遇到一个问题,即从 JSON 数组追加大字符串字符。
我的数据很大,它在正确迭代数组的 205 个索引后进入日志
但是当我从 JSONArray 追加 StringBuffer 或 StringBuilder 中的每一行 String 时,它只接收 4063 个字符而不追加 JSONArray 中存在的所有字符,但迭代不会中断并一直持续到完成204 行。
String outputFinal = null;
try {
StringBuilder cryptedString = new StringBuilder(1000000);
JSONObject object = new JSONObject(response);
JSONArray serverCustArr = object.getJSONArray("ServerData");
Log.d("TAG", "SurverCust Arr "+serverCustArr.length());
for (int i = 0; i < serverCustArr.length(); i++) {
String loclCryptStr = serverCustArr.getString(i);
Log.d("TAG", "Loop Count : "+i);
cryptedString.append(loclCryptStr);
}
Log.d("TAG", "Output :"+cryptedString.toString());
CryptLib _crypt = new CryptLib();
String key = this.preference.getEncryptionKey();
String iv = this.preference.getEncryptionIV();
outputFinal = _crypt.decrypt(cryptedString.toString(), key,iv); //decrypt
System.out.println("decrypted text=" + outputFinal);
} catch (Exception e) {
e.printStackTrace();
}
我的 JSON 数组在 205 中联系了 119797 个字符,在迭代后追加到 StringBuffer 中,我必须使用接受字符串进行解密的库对其进行解密。但是 StringBuffer 没有完整的 119797 个字符的数据。
异常是因为字符串不完整,我在下面附上 link 上的文件以供参考,还使用 跨平台 CryptLib 使用 AES 256 进行加密 很容易找到在 Github
不要使用 StringBuffer ,而是使用 StringBuilder ..这里有详细的解释
希望这对您有所帮助。 :)
编辑
这是我用来读取整个字符串的代码...
public void parseLongString(String sourceFile, String path) {
String sourceString = "";
try {
BufferedReader br = new BufferedReader(new FileReader(sourceFile));
// use this for getting Keys Listing as Input
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
sb.append(line);
line = br.readLine();
}
br.close();
sourceString = sb.toString();
sourceString = sourceString.toUpperCase();
System.out.println(sourceString.length());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
File file = new File(path);
FileWriter fileWriter = null;
BufferedWriter bufferFileWriter = null;
try {
fileWriter = new FileWriter(file, true);
bufferFileWriter = new BufferedWriter(fileWriter);
} catch (IOException e1) {
System.out.println(" IOException");
e1.printStackTrace();
}
try {
fileWriter.append(sourceString);
bufferFileWriter.close();
fileWriter.close();
} catch (IOException e) {
System.out.println("IOException");
e.printStackTrace();
}
}
这是输出文件,我只是将其转换为大写。
https://www.dropbox.com/s/yecq0wfeao672hu/RealTextCypher%20copy_replaced.txt?dl=0
希望对您有所帮助!
编辑 2
如果你还在找东西..你也可以试试STRINGWRITER
语法为
StringWriter writer = new StringWriter();
try {
IOUtils.copy(request.getInputStream(), writer, "UTF-8");
} catch (IOException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
String theString = writer.toString();
我在 StringBuffer 连接中遇到一个问题,即从 JSON 数组追加大字符串字符。 我的数据很大,它在正确迭代数组的 205 个索引后进入日志 但是当我从 JSONArray 追加 StringBuffer 或 StringBuilder 中的每一行 String 时,它只接收 4063 个字符而不追加 JSONArray 中存在的所有字符,但迭代不会中断并一直持续到完成204 行。
String outputFinal = null;
try {
StringBuilder cryptedString = new StringBuilder(1000000);
JSONObject object = new JSONObject(response);
JSONArray serverCustArr = object.getJSONArray("ServerData");
Log.d("TAG", "SurverCust Arr "+serverCustArr.length());
for (int i = 0; i < serverCustArr.length(); i++) {
String loclCryptStr = serverCustArr.getString(i);
Log.d("TAG", "Loop Count : "+i);
cryptedString.append(loclCryptStr);
}
Log.d("TAG", "Output :"+cryptedString.toString());
CryptLib _crypt = new CryptLib();
String key = this.preference.getEncryptionKey();
String iv = this.preference.getEncryptionIV();
outputFinal = _crypt.decrypt(cryptedString.toString(), key,iv); //decrypt
System.out.println("decrypted text=" + outputFinal);
} catch (Exception e) {
e.printStackTrace();
}
我的 JSON 数组在 205 中联系了 119797 个字符,在迭代后追加到 StringBuffer 中,我必须使用接受字符串进行解密的库对其进行解密。但是 StringBuffer 没有完整的 119797 个字符的数据。
异常是因为字符串不完整,我在下面附上 link 上的文件以供参考,还使用 跨平台 CryptLib 使用 AES 256 进行加密 很容易找到在 Github
不要使用 StringBuffer ,而是使用 StringBuilder ..这里有详细的解释
希望这对您有所帮助。 :)
编辑
这是我用来读取整个字符串的代码...
public void parseLongString(String sourceFile, String path) {
String sourceString = "";
try {
BufferedReader br = new BufferedReader(new FileReader(sourceFile));
// use this for getting Keys Listing as Input
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
sb.append(line);
line = br.readLine();
}
br.close();
sourceString = sb.toString();
sourceString = sourceString.toUpperCase();
System.out.println(sourceString.length());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
File file = new File(path);
FileWriter fileWriter = null;
BufferedWriter bufferFileWriter = null;
try {
fileWriter = new FileWriter(file, true);
bufferFileWriter = new BufferedWriter(fileWriter);
} catch (IOException e1) {
System.out.println(" IOException");
e1.printStackTrace();
}
try {
fileWriter.append(sourceString);
bufferFileWriter.close();
fileWriter.close();
} catch (IOException e) {
System.out.println("IOException");
e.printStackTrace();
}
}
这是输出文件,我只是将其转换为大写。
https://www.dropbox.com/s/yecq0wfeao672hu/RealTextCypher%20copy_replaced.txt?dl=0
希望对您有所帮助!
编辑 2
如果你还在找东西..你也可以试试STRINGWRITER 语法为
StringWriter writer = new StringWriter();
try {
IOUtils.copy(request.getInputStream(), writer, "UTF-8");
} catch (IOException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
String theString = writer.toString();