为了账号安全,请及时绑定邮箱和手机立即绑定

在 FTP 中读取 file.xml

在 FTP 中读取 file.xml

拉丁的传说 2021-10-28 16:57:49
我在 FTP 中读取 .xml 文件时出现问题,出现以下消息:“ftp:\cifpag\FilesNotes\Maxdata_Venda_209016.XML(文件名、目录名或卷标的语法不正确)”,在该代码对已经完成的测试以及每个步骤中发生的情况进行了评论,它遵循以下代码:公共类 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");    }    
查看完整描述

2 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

我能够通过将 XML 文件转换为字符串然后返回为 xml 来执行代码,我希望它对某人有所帮助。


public class MyFTPClass {


private static FTPFile[] obterArquivosDiretorio(FTPClient ftp, String dirPath) throws IOException {

    String cwd = ftp.printWorkingDirectory();


    ftp.changeWorkingDirectory(dirPath);

    FTPFile[] files = ftp.listFiles();

    ftp.changeWorkingDirectory(cwd);


    return files;

}


public static void main(String args[]) throws SAXException, ParserConfigurationException {


    // Create an instance of FTPClient

    FTPClient ftp = new FTPClient();

    try {


        // Establish a connection with the FTP URL

        ftp.connect("caminho_ftp");

        // Enter user details : user name and password

        boolean isSuccess = ftp.login("usuario", "senha");


        if (isSuccess) {

            // Fetch the list of names of the files. In case of no files an

            // empty array is returned


            String path = "ArquivosNotas";

            FTPFile[] listedDirectories = obterArquivosDiretorio(ftp, path);


            int countXml = 1;

            // Iterate on the returned list to obtain name of each file

            for (FTPFile file : listedDirectories) {


                if (file.getName().toLowerCase().contains("xml")) {


                    System.out.println();

                    System.out.println("Lendo " + countXml + " xml");

                    System.out.println();


                    InputStream stream = ftp.retrieveFileStream("ArquivosNotas/" + file.getName());

                    BufferedReader reader = new BufferedReader(new InputStreamReader(stream, "UTF-8"));


                    // xml vai virar uma string para depois fazer o parse para o document

                    StringBuilder sb = new StringBuilder();

                    String inline = "";

                    while ((inline = reader.readLine()) != null) {

                        sb.append(inline);

                    }


                    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

                    DocumentBuilder builder = factory.newDocumentBuilder();


                    // convert string do xml para xml em document

                    Document doc = (Document) builder.parse(new ByteArrayInputStream(sb.toString().getBytes()));


                    NodeList listaDeVenda = doc.getElementsByTagName("venda");

                    int tamanhoDaLista = listaDeVenda.getLength();


                    NodeList listaDeProdutos = doc.getElementsByTagName("item");

                    int tamanhoDaListaDeProdutos = listaDeProdutos.getLength();


                    System.out.println();

                    System.out.println("Qtde itens xml " + tamanhoDaListaDeProdutos);


                    System.out.println("Finalizado " + countXml + " xml");

                    System.out.println();

                    countXml++;


                    stream.close();

                    reader.close();

                    ftp.completePendingCommand();

                }


            }

        }


        ftp.logout();

    } catch (IOException e) {

        e.printStackTrace();

    } finally {

        try {

            ftp.disconnect();

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

}

}


查看完整回答
反对 回复 2021-10-28
  • 2 回答
  • 0 关注
  • 303 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信