Gemme Fil på FTP-server
Jeg er ved at lave et lille program hvor jeg har brug for at gemme en fil på en FTP-server.Jeg har fået følgende klasse:
<code>
import java.io.*;
import java.net.*;
import java.util.*;
public class FtpForbindelse
{
private Socket kontrol;
private PrintStream ud;
private BufferedReader ind;
private String læsSvar() throws IOException
{
while (true)
{
String s = ind.readLine();
System.out.println(s);
if (s.length() >= 3 && s.charAt(3) != '-' && Character.isDigit(s.charAt(0)) && Character.isDigit(s.charAt(1)) && Character.isDigit(s.charAt(2)))
{
return s;
}
}
}
public String sendKommando(String kommando) throws IOException
{
ud.println(kommando);
ud.flush();
return læsSvar();
}
public void forbind(String vært, String bruger, String kode)throws IOException
{
kontrol = new Socket(vært, 21);
ud = new PrintStream(kontrol.getOutputStream());
ind = new BufferedReader(new InputStreamReader(kontrol.getInputStream()));
læsSvar();
sendKommando("USER " + bruger);
sendKommando("PASS " + kode);
}
private Socket skafDataforbindelse() throws IOException
{
String maskineOgPortnr = sendKommando("PASV");
StringTokenizer st = new StringTokenizer(maskineOgPortnr, "(,)");
if (st.countTokens() < 7) throw new IOException("Ikke logget ind");
st.nextToken();
st.nextToken();
st.nextToken();
st.nextToken();
st.nextToken();
int portNr = 256 * Integer.parseInt(st.nextToken()) + Integer.parseInt(st.nextToken());
return new Socket(kontrol.getInetAddress(), portNr);
}
public void sendTekst(String kommando, String data) throws IOException
{
Socket df = skafDataforbindelse();
PrintStream dataUd = new PrintStream( df.getOutputStream() );
sendKommando(kommando);
dataUd.print(data);
dataUd.close();
df.close();
læsSvar();
}
public String modtagTekst(String kommando) throws IOException
{
Socket df = skafDataforbindelse();
BufferedReader dataInd = new BufferedReader(new InputStreamReader(df.getInputStream()));
sendKommando(kommando);
StringBuffer sb = new StringBuffer();
String s = dataInd.readLine();
while (s != null)
{
System.out.println(s);
sb.append(s+"\n");
s = dataInd.readLine();
}
dataInd.close();
df.close();
læsSvar();
return sb.toString();
}
}
</code>
Klassen er lavet ud fra bogen "Objektorienteret programmering i Java", Skrevet af Jacob Nordfalk (Virkelig en god bog, kan klart anbefales for nybegyndere)
Mit problem er nu at jeg skal have skrevet en metode hvor jeg har en fil med som parameter, og denne fil skal så gemmes på FTP-Serveren. Jeg har prøvet at sende et objekt af klassen File med, men det holder ikke helt - da jeg ikke ved hvordan dataen skal overføres. Det skal vel overføres i bytes?
Håber nogen kan hjælpe.
