Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当应用程序遇到长名称文件时,进程将终止_Java_Android_Linux - Fatal编程技术网

Java 当应用程序遇到长名称文件时,进程将终止

Java 当应用程序遇到长名称文件时,进程将终止,java,android,linux,Java,Android,Linux,代码如下: android.util.Log.i("QRDFileExplorer","loadDir().before=feaffdsafdsf"); String[] names=f.list(); android.util.Log.i("QRDFileExplorer","loadDir().string names="); 代码在大多数情况下运行良好,但如果目录下有一个文件名很长(超过90个汉字,约180字节),那么当涉及到f.list(),整个过程将毫无例外地结束 日志: 04-10

代码如下:

android.util.Log.i("QRDFileExplorer","loadDir().before=feaffdsafdsf");
String[] names=f.list();
android.util.Log.i("QRDFileExplorer","loadDir().string names=");
代码在大多数情况下运行良好,但如果目录下有一个文件名很长(超过90个汉字,约180字节),那么当涉及到
f.list()
,整个过程将毫无例外地结束

日志:

04-10 16:46:49.129: I/QRDFileExplorer(16413): loadDir().before=feaffdsafdsf
04-10 16:46:49.129: A//system/bin/app_process(16413): stack corruption detected: aborted
04-10 16:46:49.149: E/COREDUMP(16500): /sdcard1/coredump Read-only file system
04-10 16:46:49.159: I/WindowState(586): WIN DEATH: Window{41920440 com.android.qrdfileexplorer/com.android.qrdfileexplorer.QRDFileExplorer paused=false}
04-10 16:46:49.159: I/ActivityManager(586): Process com.android.qrdfileexplorer (pid 16413) has died.
04-10 16:46:49.169: W/ActivityManager(586): Force removing ActivityRecord{416bd738 com.android.qrdfileexplorer/.QRDFileExplorer}: app died, no saved state
04-10 16:46:49.239: W/InputMethodManagerService(586): Got RemoteException sending setActive(false) notification to pid 16413 uid 10017

android.util.Log.i(“QRDFileExplorer”,“loadDir().string name=”)日志未打印,因此它必须是
String[]names=f.list()的问题
,我相信代码是正确的,我们都用这种方式列出文件,所以这是电话平台的问题,对吗?这是关于记忆或其他的东西。任何人如果知道更多这方面的信息以及如何解决这一问题,至少会给用户一个警告,而不是突然关机。

现在我知道,在UTF-8编码中,一个汉字可能会占用3个字节,因此90个汉字的编码字节超过255个字节。而且Linux的文件名限制不超过255字节,所以文件名已经超过了限制,但是如何解决这个问题呢?或者随它去吧,因为Linux已经限制了长度,它在emulator中工作吗?我在emulator中测试了这个,但失败了,因为当我推送一个文件名中包含汉字的文件时,它会变成不可读的代码。我在HTC Desire S上进行了测试,该文件只是忽略了长名称文件。所以,这是关于libcore的。关于java_io_File.cpp文件中的文件名限制。我会继续追查。