मैं लाइन द्वारा फ़ाइल लाइन पढ़ने के लिए जावा का उपयोग करने की कोशिश कर रहा हूं, जो बहुत आसान है (stackoverflow.com पर इसके लिए कई समाधान हैं), लेकिन यहां चेतावनी यह है कि फ़ाइल रिमोट सर्वर पर स्थित है, और यह एक स्थानीय प्रति प्राप्त करना संभव नहीं है (यह एक .txt फ़ाइल में लाखों अमेज़ॅन समीक्षाओं का एक विशाल संग्रह है)।लाइन द्वारा दूरस्थ फ़ाइल लाइन पढ़ने के लिए जावा JSch लाइब्रेरी का उपयोग कैसे करें?
जेएसएच दो उदाहरण वर्गों के साथ आता है जो दूरस्थ होस्ट्स, अर्थात् एसपीपीटीओ और एसपीपीफ़्रॉम से फ़ाइलों की प्रतिलिपि बनाते हैं। मुझे लाइन से रिमोट होस्ट लाइन से फ़ाइल पढ़ने में दिलचस्पी है; ScpFrom पूरी चीज़ को स्थानीय फ़ाइल में कॉपी करने का प्रयास करेगा, जिसमें उम्र लग जाएगी।
यहाँ ScpFrom के लिए एक लिंक है: http://www.jcraft.com/jsch/examples/ScpFrom.java.html
मैं कोड वहाँ कोड के सबसे कार्गो पंथ की कोशिश करेंगे और फिर एक स्थानीय फ़ाइल पर लिखने लाइन द्वारा एक दूरस्थ फ़ाइल लाइन पढ़ बजाय इसे संशोधित, लेकिन एक बार लेखक बाइट सरणी घोषित करता है और दूरस्थ फ़ाइल से बाइट पढ़ने शुरू करता है तो मेरे लिए यूनानी है। मैं स्वीकार करूंगा कि यह ऐसा कुछ है जिसकी मुझे लगभग कोई समझ नहीं है; BufferedReader एक बहुत उच्च स्तर इंटरफेस प्रदान करता है। अनिवार्य रूप से मैं यह करना चाहता हूं: How to read a large text file line by line using Java?
एक बफर रीडर का उपयोग करने के अलावा जो लाइन द्वारा रिमोट फाइल लाइन को भी पढ़ सकता है, अगर मेजबान का नाम और उपयोगकर्ता प्रमाण-पत्र (पासवर्ड इत्यादि) प्रदान किया जाता है, यानी रिमोटबफर रीडर?
यह मैंने लिखा है टेस्ट कोड है; जेएससीएच का उपयोग कर लाइन द्वारा रिमोट फाइल लाइन में मैं कैसे पढ़ूं?
public class test2
{
static String user = "myusername";
static String host = "[email protected]";
static String password = "mypasswd";
static String rfile = "/path/to/remote/file/on/remote/host";
public static void main(String[] args) throws FileNotFoundException, IOException, JSchException
{
JSch jsch=new JSch();
Session session=jsch.getSession(user, host, 22);
session.setPassword(password);
session.connect();
// exec 'scp -f rfile' remotely
String command="scp -f "+rfile;
Channel channel=session.openChannel("exec");
((ChannelExec)channel).setCommand(command);
// get I/O streams for remote scp
OutputStream out=channel.getOutputStream();
channel.connect()
//no idea what to do next
}
}
मैं 'scp' की बजाय' cat' (रिमोट होस्ट पर) का उपयोग करता था। फिर बस लाइन-दर-पंक्ति कमांड के stdout पढ़ें। – Rob
आप jsch के साथ sftp पर इनपुटस्ट्रीम खोल सकते हैं और उस पंक्ति को – nablex