社区
Java SE
帖子详情
FtpClient类问题
pcxx99
2005-11-11 10:30:51
偶在调用该类做上传的时候
ftpClient.cd(path);
怎么写这个path都不对,上传的文件只能传到根目录
这个路径该怎么写?
请写下实际例子
偶做的这个上传是从windows端向unix端传文件
但上传后的文件在unix端打开后每行都有^M
我调用了ftpClient.binary();的,怎么没起作用?
这么消除每行的这个 ^M
...全文
683
12
打赏
收藏
FtpClient类问题
偶在调用该类做上传的时候 ftpClient.cd(path); 怎么写这个path都不对,上传的文件只能传到根目录 这个路径该怎么写? 请写下实际例子 偶做的这个上传是从windows端向unix端传文件 但上传后的文件在unix端打开后每行都有^M 我调用了ftpClient.binary();的,怎么没起作用? 这么消除每行的这个 ^M
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
niko7
2005-11-26
打赏
举报
回复
如果是文本文件,就不要使用二进制方式,ftp服务器会自动转换其中的换行符号。
(也仅仅是部分服务器,而且要看是否设置启用了自动转换。)
一般而言,你用 BufferedReader 一行一行的读,每行后面加上目标服务器上的换行符。
当然,这样的话就用二进制方式传送了。
gemouzhi
2005-11-15
打赏
举报
回复
我不是给你写了?
你read一下,读出一个0到65535,遇到13,去了,然后写回去。
这样把文件整一下,在UNIX上是不可能出错的。emacs打开也绝对没问题。
当然,UNIX显示正常的文件,在WINDOWS 上会少那个CR也就是13。因为UNIX上只有10也就是LF。
pcxx99
2005-11-15
打赏
举报
回复
怎么处理上传下载文件每行最后的乱字符???请给出代码
上传到unix后文件内容t.txt:
ajljsjfs^M
neniefnie^M
下载后收到文件直接用文本方式打开t.txt,字符串将连成一行,并原换行符将变成一个黑点,用UltraEdit打开显示正常。
愚夫努力
2005-11-14
打赏
举报
回复
你登陆FTP服务器,用FTP命令字试试,CD 你的目录,看行不行,不行的话查FTP命令字,然后用sendserver再试。
pcxx99
2005-11-13
打赏
举报
回复
在登录unix环境后
是不是ftpClient.cd(path);中的path不能赋值写成
path = "/tmp/test";
gemouzhi
2005-11-11
打赏
举报
回复
你read一下,读出一个0到65535,遇到13,去了,然后写回去
pcxx99
2005-11-11
打赏
举报
回复
to gemouzhi
把CR去掉???
怎么做?
求代码
pcxx99
2005-11-11
打赏
举报
回复
比方说偶在unix环境下有用户mytest
那我做的这个上传下载就只能在/home/mytest/目录下执行
如果我想将文件放到/home/mytest/tmp目录下上传下载就都执行不了
gemouzhi
2005-11-11
打赏
举报
回复
也不是程序的问题,这是文件的问题,说白了是操作系统的异构而形成的
pcxx99
2005-11-11
打赏
举报
回复
public void upload(String infile)
{
int i = infile.lastIndexOf("\\");
String outfile = infile.substring(i+1, infile.length());
System.out.println("-------------------infile["+infile+"]");
System.out.println("-------------------outfile["+outfile+"]lastindex["+i+"]");
try {
TelnetOutputStream os=ftpClient.put(outfile);
File file_in=new File(infile);
FileInputStream is=new FileInputStream(file_in);
byte[] bytes=new byte[1024];
int c;
while ((c=is.read(bytes))!=-1){
os.write(bytes,0,c);
System.out.println("-------------------bytes["+bytes+"]");
}
is.close();
os.close();
}catch (IOException ex){
ex.printStackTrace();
}
}
public void load(String infile)
{
int ch;
// String infile = "t.txt";
int i = infile.lastIndexOf("/");
String outfile = infile.substring(i+1, infile.length());
outfile = "C:\\temp\\" + outfile;
System.out.println("-------------------infile["+infile+"]");
System.out.println("-------------------outfile["+outfile+"]lastindex["+i+"]");
try {
RandomAccessFile rFile = new RandomAccessFile(outfile,"rw");
rFile.seek(0);
TelnetInputStream tInput=ftpClient.get(infile);
DataInputStream dInput = new DataInputStream(tInput);
while ( (ch = dInput.read()) >= 0) {
rFile.write(ch);
}
dInput.close();
rFile.close();
}catch (IOException ex){
ex.printStackTrace();
}
}
这是偶写的上传和下载的代码。
请帮忙指出问题
gemouzhi
2005-11-11
打赏
举报
回复
这是一个很常见的问题,你需要在windows这边做处理
你是不是用emacs看的多^M也就是control M吧,你传的时候需要把CR去掉
和这个类似的问题还有Macintosh 这不是ftpClient的问题。
RFC 959(好象是这个啊,反正是一个FTP的RFC上说过) 已经说明了这个问题
farmer0512
2005-11-11
打赏
举报
回复
ftpClient的文件路径是相对路径还是绝对路径和Ftp Server的类型有关,我就遇到过wu-ftp是相对路径而vs-ftp是绝对路径的问题,所以你最好在put文件的时候不要用/xxx/xxx这种绝对路径的书写方式。还有ftp用户权限问题,linux下root不能作为ftp用户的所以通常用的用户不一定能够在你的目的路径下有写文件的权限,所以一定要建好目录再传。这个没有什么实际例子,我用的也是网上的例子。
public boolean sendFile(String filepathname, String distfilepathname) {
boolean result = true;
if (aftp != null) {
System.out.println("正在粘贴文件,请耐心等待....");
String contentperline;
try {
a = "粘贴成功!";
String fg = new String("/");
int index = filepathname.lastIndexOf(fg);
String filename = filepathname.substring(index + 1);
File localFile;
localFile = new File(filepathname);
RandomAccessFile sendFile = new RandomAccessFile(filepathname, "r");
//
sendFile.seek(0);
outs = aftp.put(distfilepathname);
outputs = new DataOutputStream(outs);
while (sendFile.getFilePointer() < sendFile.length()) {
ch = sendFile.read();
outputs.write(ch);
}
outs.close();
sendFile.close();
//FileOperator fop = new FileOperator();
//fop.DeleteFile(filepathname);
}catch (IOException e) {
a = "粘贴失败!";
result = false;
}
System.out.println(a);
//
}else {
result = false;
}
return result;
}
第二个问题没有遇到过。你是怎么写文件的?
FTP
Client
类
已经测试功能OK的
FTP
Client
类
,实现了
ftp
的上传下载等功能
.NET下的
Ftp
Client
类
因为开发一个项目要用到
FTP
上传功能,用的是.NET平台,当时找了半天也没有关于
FTP
...找了很多资料,并参考了一下Java的sun.net.
Ftp
Client
类
,总算可以拿出来用,所以就迫不及待的传上来给大家共享,相对性能方面还可以。
FTP
Client
开发工具
类
及使用示例
FTP
Client
是Java编程中用于实现
FTP
(文件传输协议)客户端功能的一个重要工具
类
,它源自Apache Commons Net库。Apache Commons Net提供了丰富的
FTP
客户端操作接口,使得开发者能够方便地与
FTP
服务器进行交互,如上传...
commons-
ftp
中
ftp
Client
类
的API
### 基于commons-
ftp
中的
FTP
Client
类
的API详解 #### 一、概述 `
FTP
Client
`
类
是Apache Commons Net库中用于处理
FTP
(文件传输协议)客户端操作的一个核心
类
。通过它,用户可以方便地与
FTP
服务器进行交互,执行诸如...
调用
Ftp
Client
类
上传文件(java)
总结一下,使用`
Ftp
Client
`
类
在Java中上传文件涉及到以下关键步骤: 1. 引入Apache Commons Net库。 2. 创建`
FTP
Client
`实例并连接到
FTP
服务器。 3. 登录
FTP
服务器,设置文件
类
型和传输模式。 4. 提供本地文件的输入...
Java SE
62,629
社区成员
307,258
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章