I have a problem reading an .xml file in an FTP, and the following message appears: "ftp: \ cipher.ca \ FileName \ Maxdata_Venda_209016.XML (The syntax of the file name, directory name, or volume label is incorrect) ", in the code this commenting on the tests that already were done and what happens in each step, it follows the code below:
public class ImportXmlFromFTP {
private static Connection conexao;
private String endereco_ftp;
private String usuario;
private String senha;
private String caminho_ftp;
private String caminho_local;
private String valor;
public ImportXmlFromFTP(){
}
public void inicia() throws SocketException, IOException, SQLException {
//DADOS CONEXAO
this.conexao = ConexaoBancoDeDados.getConexao();
String sql = "SELECT daea_endereco_ftp, daea_usuario, daea_senha, daea_caminho_ftp, daea_caminho_local FROM sistema.dados_envio_arquivos";
PreparedStatement stmtSelect = this.conexao.prepareStatement(sql);
ResultSet rs = stmtSelect.executeQuery();
List<DadosEnviaArquivos> listaCliente = new ArrayList<DadosEnviaArquivos>();
while(rs.next()){
DadosEnviaArquivos dados = new DadosEnviaArquivos();
endereco_ftp = rs.getString("daea_endereco_ftp");
usuario = rs.getString("daea_usuario");
senha = rs.getString("daea_senha");
caminho_ftp = rs.getString("daea_caminho_ftp");
caminho_local = rs.getString("daea_caminho_local");
}
//CONEXAO COM FTP
FTPClient ftp = new FTPClient();
ftp.connect(endereco_ftp);
ftp.login( usuario, senha );
ftp.changeWorkingDirectory (caminho_ftp);
//PASTA COM OS ARQUIVOS
int m = 0;
String nomeArquivo = "";
File caminhoParaFTP = new File(caminho_local + "/");
File arquivos[] = caminhoParaFTP.listFiles();
while (m != arquivos.length){
nomeArquivo = arquivos[m].getName();
FileInputStream arqEnviar = new FileInputStream(caminhoParaFTP + "/" + nomeArquivo);
//IMPORTA PARA O FTP
if (ftp.storeFile (nomeArquivo, arqEnviar)) {
System.out.println("Arquivo armazenado com sucesso!");
arqEnviar.close();
//APAGA ARQUIVO DA PASTA LOCAL
File file = new File(caminhoParaFTP+"/"+nomeArquivo);
file.delete();
m++;
}else{
System.out.println ("Erro ao armazenar o arquivo.");
}
}
ftp.disconnect();
//LER ARQUIVO DO FTP E IMPORTAR PARA O SISTEMA
//PEGAR PASTA FTP
classe_FTP ClienteFTP = new classe_FTP();
ClienteFTP.Conectar(endereco_ftp, usuario, senha, 21);
String caminho = caminho_ftp;
ArrayList<String> nomes=new ArrayList<String>();
FTPFile[] arquivosFTP = ClienteFTP.Dir(caminho);
if (arquivosFTP != null) {
int length = arquivosFTP.length;
for (int g = 0; g < length; ++g) {
FTPFile p = arquivosFTP[g];
if (p.isFile()) {
String arquivoNominal = p.getName();
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
try {
//INICIO DOS TESTES
FileInputStream stream = new FileInputStream("ftp:\\cifensa.com.br\ArquivosNotas\" + arquivoNominal);
//InputStream is = new FileInputStream("ftp:\\" +"\\cifensa.com.br//ArquivosNotas//" + arquivoNominal);
//InputStream stream = ftp.retrieveFileStream(p.getName());
//System.out.println("Caminho: "+stream.toString());
//FIM DOS TESTE
Document doc = builder.parse(stream);
NodeList listaDeVenda = doc.getElementsByTagName("venda");
int tamanhoDaLista = listaDeVenda.getLength();
NodeList listaDeProdutos = doc.getElementsByTagName("item");
int tamanhoDaListaDeProdutos = listaDeProdutos.getLength();
for(int k = 0; k < tamanhoDaListaDeProdutos; k++){
Pedido pedido = new Pedido();
String slq = "INSERT INTO sistema.pedido(pedi_produto, pedi_quantidade, pedi_preco_unidade_produto, pedi_cliente, pedi_numero_documento, pedi_data_documento, pedi_cliente_cpf, " +
"pedi_numero_documento_fiscal, pedi_unidade, pedi_total_desconto_produto, pedi_valor_desconto_produto, pedi_porcetagem_desconto_produto, " +
"pedi_empresa, pedi_vendedor, pedi_operacao ) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
PreparedStatement stmt = conexao.prepareStatement(slq);
Node noDeProdutos = listaDeProdutos.item(k);
if(noDeProdutos.getNodeType() == Node.ELEMENT_NODE){
Element elementoProduto = (Element) noDeProdutos;
NodeList listaNosFilhosProdutos = elementoProduto.getChildNodes();
int tamandoListaNosFilhosProdutos = listaNosFilhosProdutos.getLength();
for(int l = 0; l < tamandoListaNosFilhosProdutos; l++){
Node nosFilhoProdutos = listaNosFilhosProdutos.item(l);
if(nosFilhoProdutos.getNodeType() == Node.ELEMENT_NODE){
Element elementoNoProduto = (Element) nosFilhoProdutos;
switch(elementoNoProduto.getTagName()){
case "VDIPRONOME":
stmt.setString(1, elementoNoProduto.getTextContent());
break;
case "VDIQTDE":
stmt.setDouble(2, Double.parseDouble(elementoNoProduto.getTextContent()));
break;
case "VDIVALOR":
stmt.setDouble(3, Double.parseDouble(elementoNoProduto.getTextContent()));
break;
}
}
}
}
for(int i = 0; i < tamanhoDaLista; i++ ){
Node noDeVenda = listaDeVenda.item(i);
if(noDeVenda.getNodeType() == Node.ELEMENT_NODE){
Element elementoVenda = (Element) noDeVenda;
NodeList listaNosFilhosVenda = elementoVenda.getChildNodes();
int tamanhoListaNosFilhosVenda = listaNosFilhosVenda.getLength();
for(int j = 0; j < tamanhoListaNosFilhosVenda; j++){
Node noFilhosVenda = listaNosFilhosVenda.item(j);
if(noFilhosVenda.getNodeType() == Node.ELEMENT_NODE){
Element elementoNoVenda = (Element) noFilhosVenda;
switch(elementoNoVenda.getTagName()){
case "VEDCLINOME":
stmt.setString(4, elementoNoVenda.getTextContent());
break;
case "VEDID":
stmt.setInt(5, Integer.parseInt(elementoNoVenda.getTextContent()));
break;
case "VEDABERTURA":
try{
String dataSemFormatacao = elementoNoVenda.getTextContent();
Timestamp ts = Timestamp.valueOf(dataSemFormatacao);
stmt.setTimestamp(6, ts);
} catch (Exception e) {
e.printStackTrace();
}
break;
case "CLICPFCGC":
stmt.setString(7, elementoNoVenda.getTextContent());
break;
}
}
}
}
stmt.setInt(8, 123);
stmt.setString(9, "UN");
stmt.setDouble(10, 23.4);
stmt.setDouble(11, 14.3);
stmt.setDouble(12, 14.5);
stmt.setInt(13, 1);
stmt.setInt(14, 1);
stmt.setInt(15, 1);
stmt.execute();
stmt.close();
System.out.println("Importado com sucesso!");
}//FIM DO FOR DE DADOS USUARIO
}//FIM DO FOR DE PRODUTOS
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
}
}
}
}
public static String getFileExtensionName(File f) {
if (f.getName().indexOf(".") == -1) {
return "";
} else {
return f.getName().substring(f.getName().length() - 3, f.getName().length());
}
}
public void para(){
}
}