首先说一下为什么会出现这种情况。
1.解释长度问题:
定义一个字符类型的变量究竟能有多长?
答案:65536,也就是二的16次方,因为常量在class文件的规范中,
CONSTANT_Utf8_info表中使用一个16位的无符号整数来记录字符串的长度的,最多能表示65536个字节,而javaclass文件是使用一种变体UTF-8格式来存放字符的,null值使用两个字节来表示,因此只剩下65536-2=65534个字节。
如果字符串中含有中文等非ASCII字符,那么双引号中字符的数量会更少(一个中文字符占用三个字节)。如果超出这个数量,在编译的时候编译器会报错。
既然知道了原因是这样,那么就好办了,我不让你成为常量,解决办法如下:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>27.0-jre</version>
</dependency>
然后
String result = Files.asCharSource(new File("/Users/luziyuan/Desktop/aaa.txt"), Charsets.UTF_8).read();
直接就可以将字符串读出来了,只适用于线下跑跑程序。
如果解决了你的问题,点个赞吧。