Transformar String em Objeto

7 respostas
cardosodario

Amigos,

No codigo abaixo preciso fazer a implementação do File para o path mas eu vi que o File apenas aceita um Object e não um String, como faço a conversão para que o meu String vire um objeto que o File aceite?

String path = "/papelparede/java.jpg";
            File newFile = (File) path;

Dario.

7 Respostas

kaique

Cara, acho que não entendi muito bem a sua dúvida ou o propósito disso, mas se você quer um objeto File e só possui o path para o arquivo, simplesmente basta você instanciar um tipo File. Ele possui um construtor que aceita o path para o arquivo que você deseja.
Isso não resolve os seus problemas?

[]'s.

luistiagos

String E UM OBJETO… String é uma classe que herda (assim como todas as outras…) de Object então String é um Objeto…

no seu problema basta fazer isto:

File arquivo = new File(path);
Guilherme_Gomes

kaique:
Cara, acho que não entendi muito bem a sua dúvida ou o propósito disso, mas se você quer um objeto File e só possui o path para o arquivo, simplesmente basta você instanciar um tipo File. Ele possui um construtor que aceita o path para o arquivo que você deseja.
Isso não resolve os seus problemas?

[]'s.

Traduzindo:

String path = "/papelparede/java.jpg";
File file = new File(path);
//funções que irão ajudar:
if( file.exists() ){
     System.out.println("existe");
     if( file.isFile() )
          System.out.println("Arquivo");
     else
          System.out.println("Diretório");
}else{
     System.out.println("não existe");
}
peczenyj

Seria interessante vc estudar as regras de cast.

interface I{}

class A{}

class B extends A implements I{}

class C extends B{}

B b = new B();

A a = (A) b; // isso pode, B extende A
Object o = (Object) b; // isso pode, B extende A, A extende Object
I i = (I) b; // mesma coisa
OutraCoisa oc = (OutraCoisa) b; // ERRADO: OutraCoisa nao tem nada haver com B !
C c = © b; // ERRADO: B não pode virar C.

Nesse caso, B só poderia ter cast para I, pois ele implementa essa interface e para A, que é a classe mãe.
Se A for outra classe que não Object, vc pode fazer pra tudo o que ele implementar e a classe mãe dele, terminando em Object.

cardosodario

Desculpem se não consegui ser muito claro

To querendo implementar este trecho

Onde File newFile = (File) evt.getNewValue();

Eu não tenho o evt.getNewValue(); mas tenho o path “/imagens/x.gif” que é o evt.getNewValue().toString();

Então eu teria que substituir o evt.getNewValue(); pelo path mas ele diz que os tipos são incompativeis ai vi que o evt.getNewValue(); é um objeto.

Tudo isto para fazer o BufferedImage img = ImageIO.read(newFile); funcionar

Alguém tem uma ideia?

Dario.

File newFile = (File) evt.getNewValue();
			if(newFile != null) {
				String path = newFile.getAbsolutePath();
                                if(path.endsWith(".gif") || path.endsWith(".jpg") || path.endsWith(".png") || path.endsWith(".bmp") || path.endsWith(".GIF") || path.endsWith(".JPG") || path.endsWith(".PNG") || path.endsWith(".BMP")) {
					try {
						BufferedImage img = ImageIO.read(newFile);
						float width = img.getWidth();
						float height = img.getHeight();
						float scale = height / width;
						width = maxImgWidth;
						height = (width * scale); // height should be scaled from new width							
						icon = new ImageIcon(img.getScaledInstance(Math.max(1, (int)width), Math.max(1, (int)height), img.SCALE_SMOOTH));
					}
					catch(IOException e) {
						// couldn't read image.
					}
				}
			}
peczenyj

Quais são os construtores da classe File ?

jgbt

Como ja foi explicado, vc so pode fazer cast para objetos que sejam do mesmo tipo, que passem no teste “é um”…

No seu caso, isso resolve:

File newFile = new File("path do arquivo, nao importa de onde tenha vindo");

vc deve ter copiado o codigo de algum lugar, e como vc não tem o evtgetNewValue(),deve ser um evento do swing, vc nao pode fazser da mesma maneira.
Nesse codigo, o evt.getNewValue() deve retorna um Objeto File, por isso o cast funcionaria.
Fica como dever de casa vc entender pq isso acontece.

[]´s

Criado 26 de fevereiro de 2008
Ultima resposta 26 de fev. de 2008
Respostas 7
Participantes 6