文件保存格式问题 我做了个局域网传文件的小软件,但是不知道该怎么把文件保存为原来的格式,请教各位拉,帮帮我,我用JFileChooser操作的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我现在保存后的文件是不能直接打开的 是要选择原来那程序方式才能打开 比如传WORD文本 那接后 要选打开方式选WORD 才行 怎么回事啊 文本内容是正确的代码是这样的:import java.net.*;import java.io.*;import tt.IPAddressEditor;import javax.swing.JFileChooser;public class getfile extends Thread{ String fileName; private static int port=3567;public static IPAddressEditor ip_input;public static InputStream in;private static Socket socket;private static RandomAccessFile file2=null;public getfile(){Chat.addmessg("开始连接服务器"); try{ socket = new Socket(InetAddress.getByName("127.0.0.1"),port); }catch(Exception e){ e.toString(); } Chat.addmessg("已经连接上服务器");}private void init_Stream(){ Chat.addmessg("初始化流\n"); try{ in= new DataInputStream( new BufferedInputStream (socket.getInputStream())); }catch(Exception e){} Chat.addmessg("初始化流完成!\n");}public boolean get_file(){ JFileChooser fc = new JFileChooser(); int result = fc.showSaveDialog(null); File file1=fc.getSelectedFile();String fileName = file1.getAbsolutePath(); if(file1!=null&&result==fc.APPROVE_OPTION){ try{ file2=new RandomAccessFile(file1,"rw"); }catch(Exception e4){} } else if(result==fc.APPROVE_OPTION){}if(file2!=null){ Chat.addmessg(fileName); return true;}else return false;}public void run(){ byte[] buf=new byte[1024]; if(socket!=null) { init_Stream(); try{ int num; Chat.addmessg("开始接受!\n"); while(true) {//是否读完所有数据 num=in.read(buf); if(num==(-1))break; if(num<1024) file2.write(buf,0,num);//将数据写往文件 else file2.write(buf); file2.skipBytes(num);//顺序写文件字节 } Chat.addmessg("接受数据结束!\n"); in.close(); file2.close(); }catch(Exception e3){ e3.toString(); } finally{try{ file2.close(); socket.close(); }catch(Exception ee){} } } }public static void main(String args[]){ new getfile(); }} JFileChooser这组件没用过,不过这组件应该有方法获得上传文件的后缀吧,没有就获得完整文件名然后你自己再把后缀取出来,传的时候把后缀和文件名都传过去,那边保存的时候把后缀加上不就结了,呵呵 FileChooser仅是获得文件名,你要注意扩展名。如果可以得到文件我想就不是这个的问题了。建议你用字节流读取。 java 与Flex 的编程 有好的学习方法吗? 求助!!! 软件包com.swtdesigner不存在 是怎么回事? 请问一个DefaultMutableTreeNode 如何实现刷新? 如何用鼠標雙擊圖標來運行java程序? 如何在j8下做一个可视化的bean,请教高手们。 jcreator2.5为什么会这样? 我順便提一個很久的問題 怎樣在java 中用ADO連資料庫 迷茫!!苦恼!!哪位大虾用具体例子来说明java到底能作什么??? 求助一个collection的问题~~~~ 关于String类的部分方法的具体实现 java 删除多余的空格,请不要用指针
import java.io.*;
import tt.IPAddressEditor;
import javax.swing.JFileChooser;
public class getfile extends Thread{
String fileName;
private static int port=3567;public static IPAddressEditor ip_input;
public static InputStream in;
private static Socket socket;
private static RandomAccessFile file2=null;
public getfile(){
Chat.addmessg("开始连接服务器");
try{
socket = new Socket(InetAddress.getByName("127.0.0.1"),port);
}catch(Exception e){
e.toString();
}
Chat.addmessg("已经连接上服务器");
}
private void init_Stream()
{
Chat.addmessg("初始化流\n");
try{
in= new DataInputStream(
new BufferedInputStream
(socket.getInputStream()));
}catch(Exception e){}
Chat.addmessg("初始化流完成!\n");
}
public boolean get_file(){
JFileChooser fc = new JFileChooser();
int result = fc.showSaveDialog(null);
File file1=fc.getSelectedFile();
String fileName = file1.getAbsolutePath(); if(file1!=null&&result==fc.APPROVE_OPTION){
try{
file2=new RandomAccessFile(file1,"rw");
}catch(Exception e4){}
}
else if(result==fc.APPROVE_OPTION){}
if(file2!=null){
Chat.addmessg(fileName);
return true;
}else return false;
}
public void run(){
byte[] buf=new byte[1024];
if(socket!=null)
{
init_Stream();
try{
int num;
Chat.addmessg("开始接受!\n");
while(true)
{//是否读完所有数据
num=in.read(buf);
if(num==(-1))break;
if(num<1024)
file2.write(buf,0,num);//将数据写往文件
else
file2.write(buf);
file2.skipBytes(num);//顺序写文件字节
}
Chat.addmessg("接受数据结束!\n");
in.close();
file2.close();
}catch(Exception e3){
e3.toString();
}
finally{try{
file2.close();
socket.close();
}catch(Exception ee){} }
}
}
public static void main(String args[])
{
new getfile();
}}
再把后缀取出来,传的时候把后缀和文件名都传过去,那边保存的时候把后缀加上不就结了,呵呵
如果可以得到文件我想就不是这个的问题了。建议你用字节流读取。