java遠程文件
1. java怎麼通過遠程讀取流的方式將遠程文件放到本地 急急急!! 謝謝啦
你說的遠程是Web伺服器么?如果是Web伺服器就用URLConnection,前提是知道遠程文件的URL地址;如果是CS架構的服務就用Socket編程,前提是知道IP地址和服務埠以及請求的通訊報文格式。其他還有FTP服務等,情況不一樣的。你需要把問題具體化。
2. java遠程讀寫文件詳解
實現上傳下載實際上就是io的轉換。舉例:
import hkrt.b2b.view.util.Log;
import hkrt.b2b.view.util.ViewUtil;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
public class CCFCCBFTP {
/**
* 上傳文件
*
* @param fileName
* @param plainFilePath 明文文件路徑路徑
* @param filepath
* @return
* @throws Exception
*/
public static String fileUploadByFtp(String plainFilePath, String fileName, String filepath) throws Exception {
FileInputStream fis = null;
ByteArrayOutputStream bos = null;
FTPClient ftpClient = new FTPClient();
String bl = "false";
try {
fis = new FileInputStream(plainFilePath);
bos = new ByteArrayOutputStream(fis.available());
byte[] buffer = new byte[1024];
int count = 0;
while ((count = fis.read(buffer)) != -1) {
bos.write(buffer, 0, count);
}
bos.flush();
Log.info("加密上傳文件開始");
Log.info("連接遠程上傳伺服器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22);
ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);
ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);
FTPFile[] fs;
fs = ftpClient.listFiles();
for (FTPFile ff : fs) {
if (ff.getName().equals(filepath)) {
bl="true";
ftpClient.changeWorkingDirectory("/"+filepath+"");
}
}
Log.info("檢查文件路徑是否存在:/"+filepath);
if("false".equals(bl)){
ViewUtil.dataSEErrorPerformedCommon( "查詢文件路徑不存在:"+"/"+filepath);
return bl;
}
ftpClient.setBufferSize(1024);
ftpClient.setControlEncoding("GBK");
// 設置文件類型(二進制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.storeFile(fileName, fis);
Log.info("上傳文件成功:"+fileName+"。文件保存路徑:"+"/"+filepath+"/");
return bl;
} catch (Exception e) {
throw e;
} finally {
if (fis != null) {
try {
fis.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
if (bos != null) {
try {
bos.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
}
}
/**
*下載文件
*
* @param localFilePath
* @param fileName
* @param routeFilepath
* @return
* @throws Exception
*/
public static String fileDownloadByFtp(String localFilePath, String fileName,String routeFilepath) throws Exception {
FileInputStream fis = null;
ByteArrayOutputStream bos = null;
FileOutputStream fos = null;
FTPClient ftpClient = new FTPClient();
String SFP = System.getProperty("file.separator");
String bl = "false";
try {
Log.info("下載並解密文件開始");
Log.info("連接遠程下載伺服器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22);
ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);
ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);
// ftpClient.connect(CMBCUtil.CMBCHOSTNAME, 2021);
// ftpClient.login(CMBCUtil.CMBCLOGINNAME, CMBCUtil.CMBCLOGINPASSWORD);
FTPFile[] fs;
ftpClient.makeDirectory(routeFilepath);
ftpClient.changeWorkingDirectory(routeFilepath);
bl = "false";
fs = ftpClient.listFiles();
for (FTPFile ff : fs) {
if (ff.getName().equals(fileName)) {
bl = "true";
Log.info("下載文件開始。");
ftpClient.setBufferSize(1024);
// 設置文件類型(二進制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
InputStream is = ftpClient.retrieveFileStream(fileName);
bos = new ByteArrayOutputStream(is.available());
byte[] buffer = new byte[1024];
int count = 0;
while ((count = is.read(buffer)) != -1) {
bos.write(buffer, 0, count);
}
bos.flush();
fos = new FileOutputStream(localFilePath+SFP+fileName);
fos.write(bos.toByteArray());
Log.info("下載文件結束:"+localFilePath);
}
}
Log.info("檢查文件是否存:"+fileName+" "+bl);
if("false".equals(bl)){
ViewUtil.dataSEErrorPerformedCommon("查詢無結果,請稍後再查詢。");
return bl;
}
return bl;
} catch (Exception e) {
throw e;
} finally {
if (fis != null) {
try {
fis.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
if (bos != null) {
try {
bos.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
if (fos != null) {
try {
fos.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
}
}}
備註:以上方法就實現了流的二進制上傳下載轉換,只需要將伺服器連接部分調整為本地的實際ftp服務用戶名和密碼即可。
3. JAVA 讀取遠程文件
1、遠程讀取數據的原則,是存在url可以指向該文件。
2、很顯然,你的區域網上,肯定是不行的。
3、方法:通過ftp或是發布到網上的方式,提供一個可訪問到的網路地址就可以了。
4. Java怎麼通過遠程讀取流的方式將遠程文件放到本地
以下回答為本人意見,如果有誤還請見諒。
java獲取遠程文件的方式在我的開發過程中使用過兩種
1。通過http請求進行靜態資源,首先確定文件的URL地址,然後通過URLConnection進行連接,然後通過讀取連接中返回的InputStream,再通過文件輸出流FileOutputStream進行存儲(下載)。
2.通過FTP或SFTP進行遠程文件的下載,具體實現有很多第三方的包,網路即可。
5. java遠程創建文件夾與文件
樓上的兩位簡直就是答非所問,告訴你吧,解決你這個問題的方式很多,都需要經過通信,推薦你使用ftp方式或者telnet方式,具體怎麼操作請查看apache的相關jar包,FTPClient完全可以滿足你的需求!回答完畢。
6. java 讀取遠程url文件
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
/**
* @author lmq
*
*/
public class RemoteFile {
public static void main(String[] args) throws Exception {
File remoteFile = new File("//192.168.7.146/test/1.txt");// 192.168.7.146是對方機器IP,test是對方那個共享文件夾名字,如果沒有共享是訪問不到的
//遠程文件其實主要是地址,地址弄對了就和本地文件沒什麼區別 ,windows裡面//或者\\\\開頭就表示這個文件是網路路徑了其實這個地址就像我們再windows裡面,點擊開始
//然後點擊運行,然後輸入 \\192.168.7.146/test/1.txt訪問遠程文件一樣的
BufferedReader br = new BufferedReader(new FileReader(remoteFile));
String str;
while ((str = br.readLine()) != null) {
System.out.println(str);
}
br.close();
}
}
7. 如何用java代碼刪除遠程伺服器上的文件,通過ip 地址
Ganymed SSH-2 for java 可以模擬遠程ssh登錄,可以實現在linux下刪除文件需求。謹慎,用root用戶時。
8. 怎樣從別人的電腦上通過Java的URL類遠程拷貝文件
直接復制 那是肯定不行 有安全限制
建議是設置共享 復制過來
java的Runtime.getRuntime().exec(commandText)可以調用執行cmd指令。
try {
String cmdStr = "cmd /c \\192.168.7.77\111$\sss.doc c:\\" ;
Runtime.getRuntime().exec(cmdStr);
}catch(Exception e){
e.printStackTrace();
}
如果是需要登錄
那就先用 cmd指令 net use 。。。。
就可以滿足你要求了
9. 如何用java遍歷遠程目錄的文件
最近有一個需求,要把一個文件上傳到一個公共的遠程目錄(後綴為.a), 然後其他系統去那個目錄裡面獲取文件,再經過修改,同樣也上傳到那個目錄(後綴為.b)。 然後我要過一段時間去掃描一下那個目錄下面有沒有後綴是.b 的文件產生, 如果有的話,再把這個文件拿過來做解析 ------解決方案-------------------------------------------------------- 沒干過會很盲目,寫IO 文件的事情 你去學下java IO 操作文件 簡單想像思路,一般你自己寫就是操作自己本機的電腦,就是把本機IP 127.0.0.1 的文件, 現在你的去別的IP 讀寫文件,就是文件的路徑換了個IP 一樣。 ------解決方案--------------------------------------------------------探討引用: 沒干過會很盲目,寫IO 文件的事情 你去學下java IO 操作文件 簡單想像思路,一般你自己寫就是操作自己本機的電腦,就是把本機IP 127.0.0.1 的文件, 現在你的去別的IP 讀寫文件,就是文件的路徑換了個IP 一樣。 恩,這個思路可以。
10. java 怎麼使用遠程 url 創建 file
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileReader;
/**
*@authorlmq
*
*/
publicclassRemoteFile{
publicstaticvoidmain(String[]args)throwsException{
FileremoteFile=newFile("//192.168.7.146/test/1.txt");//192.168.7.146是對方機器IP,test是對方那個共享文件夾名字,如果沒有共享是訪問不到的
//遠程文件其實主要是地址,地址弄對了就和本地文件沒什麼區別,windows裡面//或者\\開頭就表示這個文件是網路路徑了其實這個地址就像我們再windows裡面,點擊開始
//然後點擊運行,然後輸入\192.168.7.146/test/1.txt訪問遠程文件一樣的
BufferedReaderbr=newBufferedReader(newFileReader(remoteFile));
Stringstr;
while((str=br.readLine())!=null){
System.out.println(str);
}
br.close();
}
}
如果是非共享文件 你只能通過url讀取流來生成了
publicvoiddownUrlTxt(StringfileName,StringfileUrl,StringdownPath){
FilesavePath=newFile(downPath);
if(!savePath.exists()){
savePath.mkdir();
}
String[]urlname=fileUrl.split("/");
intlen=urlname.length-1;
Stringuname=urlname[len];//獲取文件名
try{
Filefile=newFile(savePath+"/"+uname);//創建新文件
if(file!=null&&!file.exists()){
file.createNewFile();
}
OutputStreamoputstream=newFileOutputStream(file);
URLurl=newURL(fileUrl);
HttpURLConnectionuc=(HttpURLConnection)url.openConnection();
uc.setDoInput(true);//設置是否要從URL連接讀取數據,默認為true
uc.connect();
InputStreamiputstream=uc.getInputStream();
System.out.println("filesizeis:"+uc.getContentLength());//列印文件長度
byte[]buffer=newbyte[4*1024];
intbyteRead=-1;
while((byteRead=(iputstream.read(buffer)))!=-1){
oputstream.write(buffer,0,byteRead);
}
oputstream.flush();
iputstream.close();
oputstream.close();
}catch(Exceptione){
System.out.println("讀取失敗!");
e.printStackTrace();
}
System.out.println("生成文件路徑:"+downPath+fileName);
}