Problemas com a classe File

Ola galera Estou com alguns problemas com a classe file e preciso de umas ideias

Segue o meu código comentado para que melhor entendam o meu problema…


private FT00ResponseVO buildResponse(String source) throws HandleException {
				
		FT00ResponseVO responseVO = new FT00ResponseVO();	
		FT00ArquivoVO arquivoVO = new FT00ArquivoVO();
		FT00RequestVO requestVO = new FT00RequestVO();
		responseVO.setCodigoRetorno(0);

		try {
			LocalFileUtil fileUtil = new LocalFileUtil(source); //source é o nome do diretorio onde se encontra a minha pasta que contem os arquivos
			List<File> files = fileUtil.getFiles("");

			byte[] buf = new byte[1024];
			int len = 0;
			
			log.info("Generating FT00 response object");

			for (File file: files) {
				
				InputStream in = null;
				ByteArrayOutputStream out = null;
				
				try {
					in = new FileInputStream(file);
					out = new ByteArrayOutputStream(); 
					
					while ((len = in.read(buf)) > 0){   
						out.write(buf, 0, len);
					}
					out.flush();
					
				
							

			        arquivoVO.setNomeArquivo(file.getName()); //Pega o respectivo dado e lista para cada arquivo que existir em Source
				arquivoVO.setCodigoProduto(requestVO.getCodigoProduto()); //Pega o respectivo dado e lista para cada arquivo que existir em Source
	       			arquivoVO.setTamanho(new Long(file.length()).toString());//Pega o respectivo dado e lista para cada arquivo que existir em Source
				arquivoVO.setTimestampArquivo(new Date(file.lastModified()));//Pega o respectivo dado e lista para cada arquivo que existir em Source
				arquivoVO.setTipoCaixaPostal(requestVO.CAIXA_TIPO_RETORNO);//Pega o respectivo dado e lista para cada arquivo que existir em Source
				
				     responseVO.addAllArquivos((List) arquivoVO);
				     
				} catch (Exception e) {
					log.warn("Fail to include file " + file.getName() + " in responseVO", e);
				} finally {
					try {
						if (in != null) {
							in.close();
						}
						if (out != null) {
							out.close();
						}
					} catch (IOException e) {
						log.warn("Fail to close streams for file " + file.getName(), e);
					}
				}
			}
		} catch (IntegLayerException e) {
			throw new HandleException(IntegLayerErrorCodes.ERROR_BUILDING_RESPONSE, e);
		}
		
		return responseVO;
	}
	

Ou seja … esse trecho de código eu listo informações sobre cada arquivo existente no diretorio source.

o meu problema.

Sou novato em java pode paracer simples para vocês mas para min é um pouco complicado… eu tenho um cara chamado “codigoCliente” eu preciso vasculhar o diretorio
e listar apenas dados sobre arquivos que tenham o mesmo codigo que vira em “codigoCliente”;

pseudo linguagem:
algo assim

file.getfile.equals(requestVO.getcodigoCliente());

o meu problema eh que nao sei como vasculhar o diretorio source buscando apenas os nomes de arquivos que seja correspondentes ao que vira em codigoCliente().

outro problema, os nomes dos arquivos virao desta maneira ex: PREFIXO_CODIGOCLIENTE_DATAEHORA.TXT ou seja terei que comparar o codigoCliente(), apenas com o que estiver entre “" pq entre "” vira o codigo que necessito para comparação…

é simples porem complexo auheuheuaea peço a ajuda de vcs galerinha espero ter sido claro vlw mesmo abração

Ok, entendo que o codigoCliente seja uma String e que, você precisará buscar o nome do arquivo (File.getName()) e comparar. Para isto, terá de pegar a parte que te interessa na String (talvez substrings o ajudem) e então fazer o que precisa.

Não seria o caso de fazer comparação de string?

if (nomeArquivo.contains("_" + requestVO.getcodigoCliente() + "_"))
//seu codigo

o metodo retorna true se encontrar a sequencia de caracteres informada no parametro.

Exatamente drsmachado … seria algo deste tipo creio eu ?

file.getName().compareTo(requestVO.getCodigoCliente());//o que eu uso aki compareTo ou equals???
file.getName().equals(requestVO.getCodigoCliente());// qual dos dois funcionara?

porem o substring nao funcionaria pq realmente preciso pegar o que há entre os dois underlines… por o nome vai variar nunca sera um numero fixo de strings

ex: uma hora sera PREFIXO_NROCLIENTE_DATAEHORA.TXT ou EXEMPLO_NROCLIENTE_CONTEUDO.TXT ou TESTANDO_NROCLIENTE_REGISTRO.TXT ou seja vai variar
o numero de caracteres preciso mesmo especificar para ele comparar o que estiver entre underlines

como faço?

vlw abração

Bom, o modo como o soaresinfo passou é mais intuitivo, porém, com substrings você consegue

String sbr = texto.subString(texto.indexOf("_"), texto.length());

Entendeu?

Seria algo assim :??

file.getName().substring(file.getName().indexOf("_"),file.getName().length()).compareTo(requestVO.getCodigoCliente());

vlw por estarem dando uma força ai galera !

Fiz de outro geito tbm assim:

if(file.getName().contains("_"+requestVO.getCodigoCliente()+"_")){
						
					arquivoVO.setNomeArquivo(file.getName());
					arquivoVO.setCodigoProduto(requestVO.getCodigoProduto());
			       		arquivoVO.setTamanho(new Long(file.length()).toString());
					arquivoVO.setTimestampArquivo(new Date(file.lastModified()));
					arquivoVO.setTipoCaixaPostal(requestVO.CAIXA_TIPO_RETORNO);
						
					}

o que vcs acham galerinha??? abração vlw mesmo