java 抛出空指针_java - Java ServerSocket抛出空指针异常 - 堆栈内存溢出
我正在尝试通过Android中的Java套接字实现文件传输。 它工作正常,但当我关闭应用程序时,它崩溃,控制台显示nullPointerException。 我已经尝试了一切,但无法找到问题! 我已经将ServerSocket定义为类变量,并在检查服务器套接字的状态后将其关闭在onDestroy()方法中。 这是我的代码:
package com.vinit.airdrive;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
//Latest saved stub
@SuppressLint("SdCardPath")
public class MainActivity extends Activity {
Socket socket=null;
ServerSocket serversocket=null;
ArrayList fileArray=null;
@SuppressLint("SdCardPath")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
File file1=new File(Environment.getExternalStorageDirectory()+"/airdrive/Sphere.pdf");
File file2=new File(Environment.getExternalStorageDirectory()+"/airdrive/Robinson.pdf");
File file3=new File(Environment.getExternalStorageDirectory()+"/airdrive/Conspiracy.pdf");
File file4=new File(Environment.getExternalStorageDirectory()+"/airdrive/Expedition.pdf");
File file5=new File(Environment.getExternalStorageDirectory()+"/airdrive/Xperia.pdf");
fileArray=new ArrayList();
fileArray.add(file1);
fileArray.add(file2);
fileArray.add(file3);
fileArray.add(file4);
fileArray.add(file5);
Thread trd = new Thread(new Runnable(){
@Override
public void run(){
initializeServer();
for (int i=0;i<=4;i++){
copyFile(fileArray.get(i), fileArray.get(i).getName());
}
}
});
trd.start();
}
private void initializeServer() {
try {
serversocket=new ServerSocket(4444);
} catch (IOException e) {
e.printStackTrace();
Log.d("Listen failed", "Couldn't listen to port 4444");
}
try {
socket=serversocket.accept();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.d("Acceptance failed","couldn't accept the server socket connection");
}
}
private void copyFile(File file, String name) {
FileInputStream fis;
long filesize=file.length();
try {
fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
@SuppressWarnings("resource")
DataInputStream dis = new DataInputStream(bis);
byte[] mybytearray = new byte[16384];
OutputStream os;
os=socket.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
dos.writeUTF(name); //filename is also sent to client
dos.writeLong(filesize); //file size is also sent to client
long z=filesize;
int n=0;
while((z > 0) && (n = dis.read(mybytearray, 0, (int)Math.min(mybytearray.length, z))) != -1){
dos.write(mybytearray,0,n);
dos.flush();
z -= n;
}
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if (serversocket != null) {
try {
serversocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
可能是什么问题呢? 请帮忙!
编辑:控制台输出:
03-22 01:35:38.630: E/AndroidRuntime(12302): FATAL EXCEPTION: Thread-1212
03-22 01:35:38.630: E/AndroidRuntime(12302): java.lang.NullPointerException
03-22 01:35:38.630: E/AndroidRuntime(12302): at com.vinit.airdrive.MainActivity.copyFile(MainActivity.java:83)
03-22 01:35:38.630: E/AndroidRuntime(12302): at com.vinit.airdrive.MainActivity.access$1(MainActivity.java:73)
03-22 01:35:38.630: E/AndroidRuntime(12302): at com.vinit.airdrive.MainActivity$1.run(MainActivity.java:50)
03-22 01:35:38.630: E/AndroidRuntime(12302): at java.lang.Thread.run(Thread.java:856)
EDIT2:
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
if (serversocket != null && socket==null) {
try {
serversocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
super.onDestroy();
}
java 抛出空指针_java - Java ServerSocket抛出空指针异常 - 堆栈内存溢出相关推荐
- java构建继承树_java - 使用继承构建通用树 - 堆栈内存溢出
我正在构建一个通用的Tree类,它支持子树的继承. 但我遇到了一些问题. 请你帮帮我吗? 描述 让我们定义Tree类和BlueTree类,其中BlueTree extends Tree . 让我们定义 ...
- java poi 段落行间距_java - Apache poi XWPF Paragraph行间距 - 堆栈内存溢出
我正在尝试使用Java / Coldfusion中的Apache Poi构建一个word文档. 到目前为止,它让我做了很多我想要的格式,除了段落的行间距. 有谁知道如何将段落设置为单行间隔? 它不断构 ...
- axis2 java客户端内存溢出怎么办_java - Axis2-总是出现404错误 - 堆栈内存溢出
我试图将一些Web服务存根从Metro移到Axis2,但是在使用wsdl2java生成存根后,每次尝试进行服务调用时,我都会不断收到404错误. 16/12/2010 11:14:57 AM org. ...
- java从端口接收数据_java - Java中通过串行端口接收数据的效率更高 - 堆栈内存溢出...
这是代码片段 我在这里启动一个动作监听器 try { port_seleted.addEventListener(this); } catch (TooManyListenersException e ...
- java获取excel文件第一行_java - 在Java中读取Excel文件,但第一行除外 - 堆栈内存溢出...
我正在尝试从使用xlsx文件的JasperReport模板自动创建报告,我用来从excel文件读取的方法是这样的: String[] columnNames = new String[]{" ...
- java 获取permgen_java - Java:如何检查当前的Perm / PermGen大小? - 堆栈内存溢出
您可以在这里使用jmap ,它是JVM堆转储工具. 例如: jmap -heap 5900 它将打印: Heap Configuration: MinHeapFreeRatio = 40 MaxHea ...
- java远程计算机终止,java - javax.net.ssl.SSLHandshakeException:远程主机终止了握手 - 堆栈内存溢出...
我已经使用以下命令在Java信任库(cacerts)中安装了证书: keytool-导入-文件" C:\\ Users \\ kdursoji \\ Downloads \\ Zscaler ...
- android 415错误,java - Android Retrofit2无法添加标头(415错误代码) - 堆栈内存溢出...
我正在尝试通过skyscanner api访问票证数据并将其传递到我的视图,但是我无法实现这一点,因为我收到415错误代码,我正在使用Retrofit2并以编程方式添加标头. 我的界面如下所示: pu ...
- java 最后的异常_java – 最后不要抛出堆栈溢出异常
Error不是例外.所以捕捉任何异常都不会捕获StackOverflowError. 所以让我们先来看一下"明显的错误" – (这段代码不太适合这个答案后面的说明): catch( ...
最新文章
- Linux 搭建SVN 服务器
- k近邻回归算法python_经典算法之K近邻(回归部分)
- 深入分析Java Web技术内幕 修订版 pdf
- 读数据库所有表和表结构的sql语句了(mssql)
- OpenCV案例(三): 玉米颗粒计数
- 该来的终于来了:“第一起”基于 IPv6 的 DDoS 攻击
- 我的压缩软件选择:7zip软件+Zip格式
- 不确定度在线计算_国睿认证干货来啦:实验室CNAS认可常见问题集锦(五):关于不确定度...
- 17、Java——汽车租赁系统(对象+数组)
- 什么是POE交换机?POE交换机的作用
- 文化财经SAR指标计算(二)
- java Base64编解码
- 安装loadrunner11的时候提示'命令行选项语法错误。键入命令 / ?’ 怎么办
- 好用的 Windows 软件授权管理工具 - slmgr
- 优思学院|准时化生产(JIT)是什么?
- [Maven进阶]多环境配置与应用
- Hadoop YARN配置参数剖析(4)—Fair Scheduler相关参数
- Suzy找到实习了吗Day25 | 回溯算法进行时:216. 组合总和 III,17电话号码
- Mysql高可用集群搭建(一)一主两从服务搭建
- 丰泽就业老师告知90后求职面试应具备的5种心态_河南丰泽教育JAVA/3G学院
热门文章
- 【英语学习】【WOTD】remittance 释义/词源/示例
- 【英语学习】【Daily English】U11 Work L04 Can you keep it a secret?
- 【C/C++】深入理解原子操作 volatile i为什么不能保证i++的原子性
- Pentium 4处理器架构/微架构/流水线 (6) - NetBurst前端详解 - 取指/译码/缓存
- Pentium Pro架构/流水线及其优化 (3) - 指令流水线/乱序执行核/高速缓存/分支预测/指令预取
- android 加载外部矢量图SVG
- feather 设置坐标刻度_matplotlib学习记录:调整刻度范围和刻度标签
- MFC通过窗口名字(caption的内容)查找窗口,并将其隐藏或者置顶显示
- 科罗拉多大学 C#游戏编程课程总结
- [高级光照]球谐光照