首页编程java编程java文件传输用什么类,java 传输 获取文件类型

java文件传输用什么类,java 传输 获取文件类型

编程之家2023-10-11113次浏览

老铁们,大家好,相信还有很多朋友对于java文件传输用什么类和java 传输 获取文件类型的相关问题不太懂,没关系,今天就由我来为大家分享分享java文件传输用什么类以及java 传输 获取文件类型的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

java文件传输用什么类,java 传输 获取文件类型

JAVA主要是用来干什么的呢

其实,Java的内容很丰富,可以实现的功能也有很多。

我们常常说的Java,首先它是一种计算机编程语言,程序员用它来和计算机交流,把要求和设想用Java语言表达出来,这个过程就是我们所说的使用Java编程,所以我们说Java是一种计算机编程语言。为了让计算机看懂,Java会有一系列的规则和约定,这些就是Java的语法。

其次,Java是一种软件开发平台。所谓软件开发简单地理解为:编程的结果是软件或者程序,而编程的过程就是软件开发。

java文件传输用什么类,java 传输 获取文件类型

JAVA可以用来干什么,下面是为大家总结的主要的六点:

一、Java可以用来做网站

很多大型网站都是用JSP写的,JSP全名Java Server Pages。这是一种动态网页技术,比如我们熟悉的B站,很多政府网站都是用这个写的所以想学习Java的同学还可以负责网站方面的制作,这方面的岗位也比较多,比如:网站开发,当然就是JSP+Servlet+JavaBean,一直以来都相当流行。

java文件传输用什么类,java 传输 获取文件类型

二、Java可以做安卓软件

安卓是一个手机系统基于Linux的操作系统,其中源代码Java,市面上所有的安卓手机,包括小米,oppo,华为手机系统都是修改Java运行的,Java做安卓也不只是只能做系统,对于更多的程序开发人员来说,更多的时间是花在APP上,也就是手机上的各种软件都是用Java写的,Java做安卓不单单是指系统,还有APP对于更多的开发人员来说,他们更多的时间是花在开发APP上面。如果你还在寻找Java在哪运用,你不用东奔西走的寻找,你的身边就是。Android手机,随便打开一个App应用,他们就是用Java语言,从Google上搜索Android的API文档,你就会发现它和Java的JDK文档惊人的相似。

三、Java可以用来做游戏

以前诺基亚手机风靡天下的时候,上面的很多小游戏都是用Java写的,只是现在都多去开发安卓了,电脑上的大多数也是用Java来开发的,最经典的就是《我的世界》,当今世界最具影响力的游戏英雄联盟,吃鸡就是用Java写的

四、Java可以用来写软件

很多编程语言都是可以来写软件的,但Java是现在最适用最广泛的,比如企业级应用开发,这里是JAVA的天地。还有OA、邮箱、投票、金融、考试、物流、医疗、矿山等信息方面的系统,Java都占有极为重要的地位。现在国内的最热门的就是手机应用,学习Java去做手机应用还是比较吃香的,比如:企业级应用开发,这里是JAVA的天地,大到全国联网的系统,小到中小企业的应用解决方案,Java都占有极为重要的地位,另外还有移动领域,典型的应用是手机游戏(国内主要是这方面),这里是J2ME的天地,其实应用范围是很广的。

五、Java服务器程序

Java在金融服务业的应用非常广泛,许多跨国投资银行例如:Goldman Sachs(高盛投资),Citigroup(花旗集团),Barclays(巴克莱银行)以及其他银行,都用Java来编写前台和后台的电子交易系统,结算和确认系统,数据处理项目以及其他项目。

大多数情况下,Java被用在服务器端开发,但多数没有任何前端,它们通常是从一个服务器(上一级)接收数据,处理后发向另一个处理系统(下一级处理)。

六、Java大数据技术

Hadoop以及其他大数据处理技术都是用Java或者其他,例如Apache的基于Java的 HBase和Accumulo以及ElasticSearchas。

但是Java在此领域并未占太大空间,但只要Hadoop和ElasticSearchas能够成长壮大,Java依旧还有潜力去在这个市场占据一部分。

java传输大文件

package sockettest;

import java.io.*;

import java.net.*;

import java.lang.Thread;

public class Client extends Thread{

private char[] buffer=new char[2048];

private Socket socket=null;

private String localIP="";

private String farIP="";

private int localPort=8765;

private int farPort=0;

private InputStream inKeyboard=System.in;

private InputStreamReader readKeyboard=new InputStreamReader(inKeyboard);

private BufferedReader getKeyboard=new BufferedReader(readKeyboard);//得到键盘输入的数据

private InputStream in=null;

private FileInputStream inFile=null;

private InputStreamReader inRead=null;

private BufferedReader read=null;

private OutputStream out=null;

private FileOutputStream outFile=null;

private OutputStreamWriter outWrite=null;

private BufferedWriter write=null;

private int timeout=30000;

public void clearBuffer(){

for(int i=0;i<buffer.length;i++)

buffer[i]=0;

}

public Client()throws Exception{

socket=new Socket();

}

public Client(String ip,int port)throws Exception{

socket=new Socket(ip,port);

localIP=socket.getLocalAddress().getHostAddress();

localPort=socket.getLocalPort();

}

public void bind(String ip,int port)throws Exception{//绑定工作

SocketAddress serverAddr=new InetSocketAddress(ip,port);

socket.bind(serverAddr);

localIP=socket.getLocalAddress().getHostAddress();

localPort=socket.getLocalPort();

}

public void setTimeout(int time)throws Exception{

timeout=time;

socket.setSoTimeout(timeout);

}

public void begin()throws Exception{//开始输入输出的变更封装

in=socket.getInputStream();

inRead=new InputStreamReader(in);

read=new BufferedReader(inRead);

out=socket.getOutputStream();

outWrite=new OutputStreamWriter(out);

write=new BufferedWriter(outWrite);

}

public void writeFromKeyboard()throws Exception{//使用键盘的输入写到套接字连接:限制每次128个字节

String s="";

s=getKeyboard.readLine();

write.write(s);

write.flush();

}

public void writeFromFile(String filePath,long off,int len)throws Exception{//将文件里的内容写到套接字连接,参数:文件,开始,长度

inFile=new FileInputStream(filePath);

InputStreamReader i=new InputStreamReader(inFile);

BufferedReader r=new BufferedReader(i);

r.skip(off);

char[] data=new char[len];

int num=r.read(data);

r.close();

write.write(data,0,num);

write.flush();

}

public String readToPrint()throws Exception{//读取套接字连接里的内容,显示到屏幕:限制1024个字节

clearBuffer();

int num=read.read(buffer);

String s=String.valueOf(buffer,0,num);

return s;

}

public void readToFile(String filePath,boolean on)throws Exception{//将读取的数据写到套接字连接中参数:文件名, true(添加)

outFile=new FileOutputStream(filePath,on);

OutputStreamWriter o=new OutputStreamWriter(outFile);

BufferedWriter w=new BufferedWriter(o);

clearBuffer();

int num=read.read(buffer);

String s=String.valueOf(buffer,0,num);

w.write(s);

w.flush();

}

public void closeLink()throws Exception{//关闭当前套接字连接

socket.close();

}

public String getLocalIP()throws Exception{//返回本地地址

return localIP;

}

public int getLocalPort()throws Exception{//返回本地端口

return localPort;

}

public String getFarIP()throws Exception{//返回远程主机地址

farIP=socket.getInetAddress().getHostAddress();

return farIP;

}

public int getFarPort()throws Exception{//返回远程主机端口

farPort=socket.getPort();

return farPort;

}

public void setBufferSize(int size){

buffer=new char[size];

}

}

---------------------------------------------------

package sockettest;

import java.io.*;

import java.net.*;

import java.lang.Thread;

public class Server extends Thread{

private char[] buffer=new char[2048];

private ServerSocket server=null;

private Socket socket=null;

private String localIP="";

private String farIP="";

private int localPort=8765;

private int farPort=0;

private InputStream inKeyboard=System.in;

private InputStreamReader readKeyboard=new InputStreamReader(inKeyboard);

private BufferedReader getKeyboard=new BufferedReader(readKeyboard);//得到键盘输入的数据

private InputStream in=null;

private FileInputStream inFile=null;

private InputStreamReader inRead=null;

private BufferedReader read=null;

private OutputStream out=null;

private FileOutputStream outFile=null;

private OutputStreamWriter outWrite=null;

private BufferedWriter write=null;

private int timeout=30000;

public void clearBuffer(){

for(int i=0;i<buffer.length;i++)

buffer[i]=0;

}

public Server(String ip,int port) throws Exception{//参数:服务器地址端口

SocketAddress serverAddr=new InetSocketAddress(ip,port);

server=new ServerSocket();

server.bind(serverAddr);

server.setSoTimeout(timeout);

}

public Server()throws Exception{

SocketAddress serverAddr=new InetSocketAddress("127.0.0.1",8765);

server=new ServerSocket();

server.bind(serverAddr);

server.setSoTimeout(timeout);

}

public void bind(String ip,int port)throws Exception{//绑定工作

SocketAddress serverAddr=new InetSocketAddress(ip,port);

server.bind(serverAddr);

}

public void accept()throws Exception{//开始侦听端口

socket= server.accept();

localIP=socket.getLocalAddress().getHostAddress();

localPort=socket.getLocalPort();

}

public void setTimeout(int time)throws Exception{

timeout=time;

server.setSoTimeout(timeout);

}

public void begin()throws Exception{//开始输入输出的变更封装

in=socket.getInputStream();

inRead=new InputStreamReader(in);

read=new BufferedReader(inRead);

out=socket.getOutputStream();

outWrite=new OutputStreamWriter(out);

write=new BufferedWriter(outWrite);

}

public void writeFromKeyboard()throws Exception{//使用键盘的输入写到套接字连接:限制每次128个字节

String s="";

s=getKeyboard.readLine();

write.write(s);

write.flush();

}

public void writeFromFile(String filePath,long off,int len)throws Exception{//将文件里的内容写到套接字连接,参数:文件,开始,长度

inFile=new FileInputStream(filePath);

InputStreamReader i=new InputStreamReader(inFile);

BufferedReader r=new BufferedReader(i);

r.skip(off);

char[] data=new char[len];

int num=r.read(data);

r.close();

write.write(data,0,num);

write.flush();

}

public String readToPrint()throws Exception{//读取套接字连接里的内容,显示到屏幕:限制1024个字节

clearBuffer();

int num=read.read(buffer);

String s=String.valueOf(buffer,0,num);

return s;

}

public void readToFile(String filePath,boolean on)throws Exception{//将读取的数据写到套接字连接中参数:文件名, true(添加)

outFile=new FileOutputStream(filePath,on);

OutputStreamWriter o=new OutputStreamWriter(outFile);

BufferedWriter w=new BufferedWriter(o);

clearBuffer();

int num=read.read(buffer);

String s=String.valueOf(buffer,0,num);

w.write(s);

w.flush();

}

public void closeLink()throws Exception{//关闭当前套接字连接

socket.close();

}

public void closeServer()throws Exception{//关闭套接字服务器

server.close();

}

public String getLocalIP()throws Exception{//返回本地地址

return localIP;

}

public int getLocalPort()throws Exception{//返回本地端口

return localPort;

}

public String getFarIP()throws Exception{//返回远程主机地址

farIP=socket.getInetAddress().getHostAddress();

return farIP;

}

public int getFarPort()throws Exception{//返回远程主机端口

farPort=socket.getPort();

return farPort;

}

public void setBufferSize(int size){

buffer=new char[size];

}

}

java 传输 获取文件类型

获取文件类型,一般的是列出目前所有的文件类型,根据表头进行相应判断,示例如下:

/**

*件头是位于文件开头的一段承担一定任务的数据,一般都在开头的部分。

*头文件作为一种包含功能函数、数据接口声明的载体文件,用于保存程序的声明(declaration),而定义文件用于保存程序的实现(implementation)。

*为了解决在用户上传文件的时候在服务器端判断文件类型的问题,故用获取文件头的方式,直接读取文件的前几个字节,来判断上传文件是否符合格式。具体代码如下:

*Java代码:

*

*/

packagecom.yonyou.sud.file;

importjava.io.FileInputStream;

importjava.io.IOException;

importjava.util.HashMap;

/**

*获取和判断文件头信息

*

*@authorSud

*

*/

publicclassGetTypeByHead{

//缓存文件头信息-文件头信息

publicstaticfinalHashMap<String,String>mFileTypes=newHashMap<String,String>();

static{

//images

mFileTypes.put("FFD8FF","jpg");

mFileTypes.put("89504E47","png");

mFileTypes.put("47494638","gif");

mFileTypes.put("49492A00","tif");

mFileTypes.put("424D","bmp");

//

mFileTypes.put("41433130","dwg");//CAD

mFileTypes.put("38425053","psd");

mFileTypes.put("7B5C727466","rtf");//日记本

mFileTypes.put("3C3F786D6C","xml");

mFileTypes.put("68746D6C3E","html");

mFileTypes.put("44656C69766572792D646174653A","eml");//邮件

mFileTypes.put("D0CF11E0","doc");

mFileTypes.put("5374616E64617264204A","mdb");

mFileTypes.put("252150532D41646F6265","ps");

mFileTypes.put("255044462D312E","pdf");

mFileTypes.put("504B0304","docx");

mFileTypes.put("52617221","rar");

mFileTypes.put("57415645","wav");

mFileTypes.put("41564920","avi");

mFileTypes.put("2E524D46","rm");

mFileTypes.put("000001BA","mpg");

mFileTypes.put("000001B3","mpg");

mFileTypes.put("6D6F6F76","mov");

mFileTypes.put("3026B2758E66CF11","asf");

mFileTypes.put("4D546864","mid");

mFileTypes.put("1F8B08","gz");

}

/**

*根据文件路径获取文件头信息

*

*@paramfilePath

*文件路径

*@return文件头信息

*/

publicstaticStringgetFileType(StringfilePath){

System.out.println(getFileHeader(filePath));

System.out.println(mFileTypes.get(getFileHeader(filePath)));

returnmFileTypes.get(getFileHeader(filePath));

}

/**

*根据文件路径获取文件头信息

*

*@paramfilePath

*文件路径

*@return文件头信息

*/

publicstaticStringgetFileHeader(StringfilePath){

FileInputStreamis=null;

Stringvalue=null;

try{

is=newFileInputStream(filePath);

byte[]b=newbyte[4];

/*intread()从此输入流中读取一个数据字节。

*intread(byte[]b)从此输入流中将最多b.length个字节的数据读入一个byte数组中。

*intread(byte[]b,intoff,intlen)从此输入流中将最多len个字节的数据读入一个byte数组中。

*/

is.read(b,0,b.length);

value=bytesToHexString(b);

}catch(Exceptione){

}finally{

if(null!=is){

try{

is.close();

}catch(IOExceptione){

}

}

}

returnvalue;

}

/**

*将要读取文件头信息的文件的byte数组转换成string类型表示

*

*@paramsrc

*要读取文件头信息的文件的byte数组

*@return文件头信息

*/

privatestaticStringbytesToHexString(byte[]src){

StringBuilderbuilder=newStringBuilder();

if(src==null||src.length<=0){

returnnull;

}

Stringhv;

for(inti=0;i<src.length;i++){

//以十六进制(基数16)无符号整数形式返回一个整数参数的字符串表示形式,并转换为大写

hv=Integer.toHexString(src[i]&0xFF).toUpperCase();

if(hv.length()<2){

builder.append(0);

}

builder.append(hv);

}

System.out.println(builder.toString());

returnbuilder.toString();

}

publicstaticvoidmain(String[]args)throwsException{

finalStringfileType=getFileType("E:/Java编程思想读书笔记.docx");

System.out.println(fileType);

}

}

OK,关于java文件传输用什么类和java 传输 获取文件类型的内容到此结束了,希望对大家有所帮助。

java中退出用什么(java 中return 的用法)劳动保障网(劳动保障网个人社保查询)