急急!!由于outstream = new FileOutputStream(f,true)引起的应用程序无响应错误

时间:2021-03-10 07:14:17
各位大侠,我的问题就是我利用try{
f=new File("/sqlite_stmt_journals/avatard_pipe");

Log.d("write pipe file==","write file new file over");
try{
outstream = new FileOutputStream(f,true);
}catch(IOException e){
Log.d("====","FileNotFoundException e");
e.printStackTrace();
}

去写管道文件的时候,才执行到outstream = new FileOutputStream(f,true)的时候就会引起android系统报应用程序无响应的错误了。我将文件改为txt文件的时候是没问题的,出错的时候也没有跑出异常,还有个我不理解的地方就是,当我在后台cat查看这个管道文件的时候,执行程序是没错误的。
附上出错信息,请各位帮我看看,麻烦大家了。急!
W/WindowManager( 1621): Key dispatching timed out sending to 挂载
W/WindowManager( 1621): Dispatch state: {{KeyEvent{action=1 code=66 repeat=0 meta=0 scancode=28 mFlags=8} to Window{308fd900 挂载 paused=false} @ 469440 lw=Window{308fd900 挂载 paused=false} lb=android.os.BinderProxy@30889f90 fin=false gfw=true ed=true tts=0 wf=false fp=false mcf=Window{308fd900 挂载 paused=false}}}
W/WindowManager( 1621): Current state:  {{KeyEvent{action=0 code=90 repeat=0 meta=0 scancode=159 mFlags=8} to Window{308fd900 挂载 paused=false} @ 513720 lw=Window{308fd900 挂载 paused=false} lb=android.os.BinderProxy@30889f90 fin=false gfw=true ed=true tts=0 wf=false fp=false mcf=Window{308fd900 挂载 paused=false}}}
W/Process ( 1621): Unable to open /proc/1698/status
I/ActivityManager( 1621): ANR in process: org.openintents.filemanager (last in org.openintents.filemanager)
I/ActivityManager( 1621): Annotation: keyDispatchingTimedOut
I/ActivityManager( 1621): CPU usage:
I/ActivityManager( 1621): Load: 0.2 / 0.35 / 0.21
I/ActivityManager( 1621): CPU usage from 86594ms to 21ms ago:
I/ActivityManager( 1621):   system_server: 2% = 2% user + 0% kernel / faults: 28 minor
I/ActivityManager( 1621):   sigm_write_cach: 2% = 0% user + 2% kernel
I/ActivityManager( 1621):   mediaserver: 0% = 0% user + 0% kernel
I/ActivityManager( 1621):   uterd.AvatarIME: 0% = 0% user + 0% kernel / faults: 8 minor
I/ActivityManager( 1621):   sigmblockd: 0% = 0% user + 0% kernel
I/ActivityManager( 1621):   uinput: 0% = 0% user + 0% kernel
I/ActivityManager( 1621):   kswapd0: 0% = 0% user + 0% kernel
I/ActivityManager( 1621):   kjournald: 0% = 0% user + 0% kernel
I/ActivityManager( 1621):   adbd: 0% = 0% user + 0% kernel
I/ActivityManager( 1621):   logcat: 0% = 0% user + 0% kernel
I/ActivityManager( 1621):  +nts.filemanager: 0% = 0% user + 0% kernel
I/ActivityManager( 1621):  -d.process.acore: 0% = 0% user + 0% kernel
I/ActivityManager( 1621): TOTAL: 7% = 4% user + 3% kernel + 0% irq + 0% softirq
I/ActivityManager( 1621): Removing old ANR trace file from /data/anr/traces.txt
I/Process ( 1621): Sending signal. PID: 1884 SIG: 3
I/dalvikvm( 1884): threadid=7: reacting to signal 3
I/dalvikvm( 1884): Wrote stack trace to '/data/anr/traces.txt'
I/Process ( 1621): Sending signal. PID: 1621 SIG: 3
I/dalvikvm( 1621): threadid=7: reacting to signal 3
I/dalvikvm( 1621): Wrote stack trace to '/data/anr/traces.txt'
I/Process ( 1621): Sending signal. PID: 1693 SIG: 3
I/dalvikvm( 1693): threadid=7: reacting to signal 3
I/dalvikvm( 1693): Wrote stack trace to '/data/anr/traces.txt'
I/power   ( 1621): *** set_screen_state 0

9 个解决方案

#1


首先确定这个路径有权限  随便new 个file  然后create  并能在该文件夹下找到

然后就是文件流的文件是否存在   new FileOutputStream(f,true);  这个之前先判断 f 是否exist

#2


权限有,文件肯定存在

#3


f=new File("/sqlite_stmt_journals/avatard_pipe");


至少这个字符串看 应用程序是无权去写的

#4


shell能做的 不能代表 你的应用程序也有同样的权限去做

所有的log都是系统类的 你找到自己类的log就知道 有没有权限了。。。。。

#5


刚测试了下  是有权限。。。。

那就在log 里面找自己的类 看看是哪行有问题

#6


是不是只读文件啊?
除了txt文件不出错,楼主用的什么文件格式会出错?

#7


楼主帮忙把trace拉出来看吧,ANR的问题光看log,不方便分析啊。

#8


友情支持。。。

#9


是不是要system权限...

#1


首先确定这个路径有权限  随便new 个file  然后create  并能在该文件夹下找到

然后就是文件流的文件是否存在   new FileOutputStream(f,true);  这个之前先判断 f 是否exist

#2


权限有,文件肯定存在

#3


f=new File("/sqlite_stmt_journals/avatard_pipe");


至少这个字符串看 应用程序是无权去写的

#4


shell能做的 不能代表 你的应用程序也有同样的权限去做

所有的log都是系统类的 你找到自己类的log就知道 有没有权限了。。。。。

#5


刚测试了下  是有权限。。。。

那就在log 里面找自己的类 看看是哪行有问题

#6


是不是只读文件啊?
除了txt文件不出错,楼主用的什么文件格式会出错?

#7


楼主帮忙把trace拉出来看吧,ANR的问题光看log,不方便分析啊。

#8


友情支持。。。

#9


是不是要system权限...