直接上代码
import java.io.*;//考虑数据溢出的问题
//为什么输入0-65536,在56320以后,读取就会少了一位?
public class DoEncry { public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new FileReader("D:/a.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("C:/a.txt"));
BufferedReader bread = new BufferedReader(new FileReader("C:/a.txt"));

int i = 0;
char c = ' ';
/*
 * 此处是进行考虑的简单数据加减所产生的溢出问题
 * 可以无视此段注释代码,如果可以也请帮忙给个解决思路
while ((i = br.read()) != -1) {
System.out.print(i);
i = i + 5;
bw.write(i);
bw.flush();
}

String s = null;
char[] sArr;
while ((s = br.readLine()) != null) {
sArr = s.toCharArray();
for (int j = 0; j < sArr.length; j ++) {
i = sArr[j] + 5;
sArr[j] = (char)i;

bw.write(sArr, 0, sArr.length); 
bw.newLine();
bw.flush();

while ((s = bread.readLine()) != null) {
sArr = s.toCharArray();
for (int j = 0; j < sArr.length; j ++) {
i = sArr[j] - 5;
System.out.print((char)i);
}
System.out.println();
}

br.close(); 
bw.close(); 
*/

int Count = 0;
//如将 56320 改成 56321 - 65535 Count 和 count 就会相差1
for(; i < 56320; i ++) {
bw.write(i);
Count ++;
}
bw.flush();
bw.close();

int k = 0;
int count = 0;
while ((k = bread.read()) != -1) {
System.out.print(k + " ");
 ++count;
}

System.out.println("\n" + Count);
System.out.println("\n" + count);
BufferedReader bre = new BufferedReader(new InputStreamReader(System.in));
bre.read();  //任意输入后退出...
System.exit(0);
} catch (IOException e) {
e.printStackTrace();
System.exit(-1);
}
}}        如果只是我把一点细节写错了,希望大侠们指出。我和另一个同学看了挺久也没看出原因。在此提前谢过各位了。

解决方案 »

  1.   

    System.out.println((byte)56319);结果也是-1
      

  2.   

    如果这样的话,读出来读到56319就是-1,while循环结束,怎么会都相差1呢?
      

  3.   

    有种感觉是和java的unicode有关,正在研究......
      

  4.   


    bw.write(1);
    bw.write(2);
    bw.write(56319);
    bw.write(56320);
    bw.write(4);
    bw.write(5);
    如果这么去写的话将会输出
    1 2 63 4 5 这里还有一个问题就是只有56319和56320连起来写才会出现这种情况
    如果给56319后边跟一个其他的就能正常写入了,非常郁闷