java中socket.shutdownOutput()使用后如果还想用输出流怎么办

java中socket.shutdownOutput()使用后如果还想用输出流怎么办,第1张

data=inreadLine();//读取服务器响应
原因是没有in这个变量
同时代码很多地方不对,向服务器发送请求要用out对象
具体如下修改:
//TCPClientjava
import javaio;
import javanet;
class TCPClient
{
public static void main(String[] args)
{
String data=null;//存放从Socket读取的字符串
String Clientdata=null;//存放从键盘读取的字符串
try
{
Socket Client=new Socket("localhost",6666);//向服务起发起连接请求
PrintWriter out=new PrintWriter(ClientgetOutputStream(),true);//创建一个向Socket中写文本的流,自动刷新
BufferedReader readFromKeyboard=new BufferedReader(new InputStreamReader(Systemin));//创建一个从键盘读取文本行的流
//===============
BufferedReader in = null;
InputStream is = ClientgetInputStream();
in = new BufferedReader(new InputStreamReader(is));
//===============
do
{
Clientdata=readFromKeyboardreadLine();//从键盘读取一行字符
//===============
outprintln(Clientdata);//向服务器发送
outflush();
//===============
data=inreadLine();//读取服务器响应
Systemoutprintln(data);//打印服务器响应
}while(!Clientdataequals("quit"));//直到客户机发送”quit”的时候结束
Systemoutclose();//关闭输出流
Systeminclose();//关闭输出流
Clientclose(); //关闭Socket
}catch(Exception e)
{
Systemoutprint("不起作用\n"+e);
}
}
}
直接手写的,不知道有没拼写错误,自己编译看看哈

        private File myFile; //文件
private String myFileContentType; //类型
private String myFileFileName;    //文件名
//。。。。getXXX() setXXX()方法

//输入流
InputStream is = new FileInputStream(myFile);
//设定文件路径
String photoPath = ServletActionContextgetServletContext()
getRealPath("/user/photo/");
File filePhotoPath = new File(photoPath);
//判断这个路径是否存在,如果不存在创建这个路径
if (!filePhotoPathisDirectory()) {
filePhotoPathmkdir();
}

String extension = FilenameUtilsgetExtension(this
getMyFileFileName());   //后缀名 比如jpg
String filename = UUIDrandomUUID()toString() + "" + extension;

// 目标文件
File tofile = new File(photoPath, filename);
// 输出流
OutputStream os = new FileOutputStream(tofile);
byte[] buffer = new byte[1024];
int length = 0;
while ((length = isread(buffer)) > 0) {
oswrite(buffer, 0, length);
}
// 关闭输入流
isclose();
// 关闭输出流
osclose();

d出窗口,我理解为浏览器d出窗口,所以必定有后端服务器程序,这里重点说的就是服务器程序。
第一步:设置Response头部(最关键)
responsesetContentType("application/octet-stream;charset=UTF-8");
// 设置d出框提示的文件名
responseaddHeader("Content-Disposition", "attachment; filename=" + javanetURLEncoderencode(fileName, "UTF-8"));
第二步:解析输入流
// 这里的in为你的输入流
BufferedInputStream is = new BufferedInputStream(in);
// 准备缓冲区
byte[] buffer = new byte[4096];
第三步:将输入流转换为输出流
BufferedOutputStream os = new BufferedOutputStream(responsegetOutputStream());
int offset = 0;
while((offset = isread(buffer, 0, 4096) > -1) {
oswrite(buffer, 0, offset)
}
第四步:关闭输入输出流
osclose();
isclose();

回答一楼,在linux服务器上是可以通过命令压缩文件的,
回答搂主的下面是我做过测试的压缩和解压文件的代码:
//文件名:myZipjava
import javaio;
import javautil;
import javautilzip;
/
<p>Title: 文件压缩和解压</p>
<p>Description: 使用ZipInputStream和ZipOutputStream对文件
和目录进行压缩和解压处理</p>
<p>Copyright: Copyright (c) 2003</p>
<p>Filename: myZipjava</p>
@author 杜江
@version 10
/
public class myZip{
/
<br>方法说明:实现文件的压缩处理
<br>输入参数:String[] fs 压缩的文件数组
<br>返回类型:
/
public void ZipFiles(String[] fs){
try{
String fileName = fs[0];
FileOutputStream f =
new FileOutputStream(fileName+"zip");
//使用输出流检查
CheckedOutputStream cs =
new CheckedOutputStream(f,new Adler32());
//声明输出zip流
ZipOutputStream out =
new ZipOutputStream(new BufferedOutputStream(cs));
//写一个注释
outsetComment("A test of Java Zipping");
//对多文件进行压缩
for(int i=1;i<fslength;i++){
Systemoutprintln("Write file "+fs[i]);
BufferedReader in =
new BufferedReader(
new FileReader(fs[i]));
outputNextEntry(new ZipEntry(fs[i]));
int c;
while((c=inread())!=-1)
outwrite(c);
inclose();
}
//关闭输出流
outclose();
Systemoutprintln("Checksum::"+csgetChecksum()getValue());
}catch(Exception e){
Systemerrprintln(e);
}
}
/
<br>方法说明:解压缩Zip文件
<br>输入参数:String fileName 解压zip文件名
<br>返回类型:
/
public void unZipFile(String fileName){
try{
Systemoutprintln("读取ZIP文件");
//文件输入流
FileInputStream fi =
new FileInputStream(fileName+"zip");
//输入流检查
CheckedInputStream csi = new CheckedInputStream(fi,new Adler32());
//输入流压缩
ZipInputStream in2 =
new ZipInputStream(
new BufferedInputStream(csi));
ZipEntry ze;
Systemoutprintln("Checksum::"+csigetChecksum()getValue());
//解压全部文件
while((ze = in2getNextEntry())!=null){
Systemoutprintln("Reading file "+ze);
int x;
while((x= in2read())!=-1)
//这里是写文件,write是以byte方式输出。
Systemoutwrite(x);
}
in2close();
}catch(Exception e){
Systemerrprintln(e);
}
}
/
<br>方法说明:读取Zip文件列表
<br>输入参数:String fileName zip文件名
<br>返回类型:Vector 文件列表
/
public Vector listFile(String fileName){
try{
String[] aRst=null;
Vector vTemp = new Vector();
//zip文件对象
ZipFile zf = new ZipFile(fileName+"zip");
Enumeration e = zfentries();
while(ehasMoreElements()){
ZipEntry ze2 = (ZipEntry)enextElement();
Systemoutprintln("File: "+ze2);
vTempaddElement(ze2);
}
return vTemp;
}catch(Exception e){
Systemerrprintln(e);
return null;
}
}
/
<br>方法说明:主方法
<br>输入参数:
<br>返回类型:
/
public static void main(String[] args){
try{
String fileName = args[0];
myZip myZip = new myZip();
myZipZipFiles(args);
myZipunZipFile(fileName);
Vector dd = myZiplistFile(fileName);
Systemoutprintln("File List: "+dd);
}catch(Exception e){
eprintStackTrace();
}
}
}

是,恒流模式。服务器指在网络环境中或在具有客户服务器结构的分布式管理环境中,为客户的请求提供服务的节点计算机,当电源工作在恒流模式时,输出电流是始终不变的,其输出电压大小并非 *** 作者决定,而是由负载决定。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13030934.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存