Buscar

Java Avançado I O recp

Prévia do material em texto

Java Avançado
Avaliação
Parte superior do formulário
1) Considere o código abaixo. O que é possível afirmar sobre ele?
	1
	Path dir = Paths.get("C:\\");
	2
	DirectoryStream.Filter<Path> filter =
	3
	  f -> !Files.isDirectory(f) && Files.size(f) > 1024;
	4
	 
	5
	try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, filter)) {
	6
	  for (Path file : stream) {
	7
	    System.out.println(file);
	8
	  }
	9
	}
	
	Imprime no console o caminho completo dos arquivos localizados em C:\ que tenham tamanho superior a 1 KB. (alternativa correta)
	
	O código não compila devido a problemas na linha 5. (alternativa incorreta)
	
	Imprime no console o caminho completo dos arquivos localizados em C:\ que tenham tamanho superior a 1 MB. (alternativa incorreta)
	
	O código não compila devido a problemas na linha 3. (alternativa incorreta)
	
	Imprime no console o caminho completo dos diretórios localizados em C:\. (alternativa incorreta)
	
	Resposta incorreta!
Este código é válido e usa um filtro customizado. Este filtro considera apenas arquivos (e não diretórios) cujo tamanho seja superior a 1 KB.
2) Suponha que você deseje acessar um arquivo já existente para escrever dados, mas que você não queira que o conteúdo já existente no arquivo seja substituído. Qual código você deve usar para conseguir isso?
* Marque todas as alternativas que respondem o enunciado da questão
	
	Files.newOutputStream("/tmp/file.txt") (alternativa incorreta)
	
	Files.newOutputStream ("/tmp/file.txt", StandardOpenOption.WRITE, StandardOpenOption.TRUNCATE) (alternativa incorreta)
	
	Files.newBufferedWriter("/tmp/file.txt", StandardOpenOption.WRITE, StandardOpenOption.APPEND) (alternativa correta)
	
	Files.newOutputStream ("/tmp/file.txt", StandardOpenOption.READ, StandardOpenOption.APPEND) (alternativa incorreta)
	
	Files.newOutputStream("/tmp/file.txt", StandardOpenOption.WRITE, StandardOpenOption.APPEND)(alternativa correta)
	
	Resposta incorreta!
É preciso usar as chamadas Files.newOutputStream() ou Files.newBufferedWriter() passando como parâmetro dois enums de StandardOpenOption: WRITE, para indicar que o arquivo será aberto para escrita; e APPEND, para indicar que os dados a serem escritos devem ser colocados depois dos dados já existentes. A opção TRUNCATE apaga os dados existentes.
3) A NIO.2 API permite que você abra uma stream para gravar dados em um determinado arquivo. Supondo que o caminho deste arquivo seja C:\Temp\arq.bin, qual a forma correta de abrir esta stream usando a NIO.2 API?
	
	Files.newOutputStream(Paths.get("C:", "Temp", "arq.bin")) (alternativa correta)
	
	new FileInputStream("C:\\Temp\\arq.bin") (alternativa incorreta)
	
	Files.newOutputStream("C:\\Temp\\arq.bin") (alternativa incorreta)
	
	Files.newInputStream(Paths.get("C:", "Temp", "arq.bin")) (alternativa incorreta)
	
	Files.newBufferedReader(Paths.get("C:", "Temp", "arq.bin")) (alternativa incorreta)
	
	Resposta incorreta!
A chamada Files.newOutputStream() deve ser utilizada para abrir uma stream de saída, representada por um objeto OutputStream. Este método recebe um Path como parâmetro, e não uma String que representa o caminho. A chamada new FileInputStream() funciona, mas não faz parte da NIO.2 API, mas sim da API legada de I/O do Java. Já as chamadas Files.newInputStream() e Files.newBufferedReader são usadas para leitura de dados, e não gravação.
4) Quais alternativas são verdadeiras com relação à Watch Service API?
* Marque todas as alternativas que respondem o enunciado da questão
	
	Notifica a aplicação quando um diretório é acessado. (alternativa incorreta)
	
	Notifica a aplicação quando um diretório é criado. (alternativa correta)
	
	Notifica a aplicação quando um arquivo é acessado. (alternativa incorreta)
	
	Notifica a aplicação quando um arquivo é criado. (alternativa correta)
	
	Notifica a aplicação quando um arquivo é excluído. (alternativa correta)
	
	Resposta correta!
A Watch Service API notifica a aplicação quando arquivos ou diretórios são criados, excluídos ou modificados.
5) Suponha que você deseje criar um objeto Path para representar o diretório /home/user/docs. Quais das alternativas abaixo correspondem a formas corretas de fazer isso?
* Marque todas as alternativas que respondem o enunciado da questão
	
	Path p = Paths.get("/home").resolve("user/docs") (alternativa correta)
	
	Path p = new Path("/home/user/docs") (alternativa incorreta)
	
	Path p = Paths.getPath("/home/user/docs") (alternativa incorreta)
	
	Path p = Paths.get("/home/user/docs") (alternativa correta)
	
	Path p = Path.get("/home/user/docs") (alternativa incorreta)
	
	Resposta incorreta!
Um objeto Path é criado a partir da chamada Paths.get(). O método resolve() também pode ser utilizado para criar partes do diretório, que compõem o caminho completo representado pelo objeto Path resultante.
Prova recuperada
Java Avançado
Avaliação
Parte superior do formulário
1) Quais alternativas são verdadeiras com relação à Watch Service API?
* Marque todas as alternativas que respondem o enunciado da questão
	
	Notifica a aplicação quando um arquivo é criado. (alternativa correta)
	
	Notifica a aplicação quando um diretório é acessado. (alternativa incorreta)
	
	Notifica a aplicação quando um arquivo é acessado. (alternativa incorreta)
	
	Notifica a aplicação quando um arquivo é excluído. (alternativa correta)
	
	Notifica a aplicação quando um diretório é criado. (alternativa correta)
	
	Resposta correta!
A Watch Service API notifica a aplicação quando arquivos ou diretórios são criados, excluídos ou modificados.
2) Considere o código abaixo. O que é possível afirmar sobre ele?
	1
	Path dir = Paths.get("C:\\");
	2
	DirectoryStream.Filter<Path> filter =
	3
	  f -> !Files.isDirectory(f) && Files.size(f) > 1024;
	4
	 
	5
	try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, filter)) {
	6
	  for (Path file : stream) {
	7
	    System.out.println(file);
	8
	  }
	9
	}
	
	O código não compila devido a problemas na linha 5. (alternativa incorreta)
	
	Imprime no console o caminho completo dos diretórios localizados em C:\. (alternativa incorreta)
	
	Imprime no console o caminho completo dos arquivos localizados em C:\ que tenham tamanho superior a 1 MB. (alternativa incorreta)
	
	Imprime no console o caminho completo dos arquivos localizados em C:\ que tenham tamanho superior a 1 KB. (alternativa correta)
	
	O código não compila devido a problemas na linha 3. (alternativa incorreta)
	
	Resposta correta!
Este código é válido e usa um filtro customizado. Este filtro considera apenas arquivos (e não diretórios) cujo tamanho seja superior a 1 KB.
3) A NIO.2 API permite que você abra uma stream para gravar dados em um determinado arquivo. Supondo que o caminho deste arquivo seja C:\Temp\arq.bin, qual a forma correta de abrir esta stream usando a NIO.2 API?
	
	Files.newOutputStream(Paths.get("C:", "Temp", "arq.bin")) (alternativa correta)
	
	new FileInputStream("C:\\Temp\\arq.bin") (alternativa incorreta)
	
	Files.newBufferedReader(Paths.get("C:", "Temp", "arq.bin")) (alternativa incorreta)
	
	Files.newInputStream(Paths.get("C:", "Temp", "arq.bin")) (alternativa incorreta)
	
	Files.newOutputStream("C:\\Temp\\arq.bin") (alternativa incorreta)
	
	Resposta correta!
A chamada Files.newOutputStream() deve ser utilizada para abrir uma stream de saída, representada por um objeto OutputStream. Este método recebe um Path como parâmetro, e não uma String que representa o caminho. A chamada new FileInputStream() funciona, mas não faz parte da NIO.2 API, mas sim da API legada de I/O do Java. Já as chamadas Files.newInputStream() e Files.newBufferedReader são usadas para leitura de dados, e não gravação.4) O que é possível afirmar sobre o método Files.readAllLines()?
* Marque todas as alternativas que respondem o enunciado da questão
	
	Lê todas as linhas do arquivo e junta os dados em um objetos String único (alternativa incorreta)
	
	Lê todas as linhas de um arquivo texto (alternativa correta)
	
	Recebe um objeto Path como parâmetro (alternativa correta)
	
	Retorna um objeto List<String> (alternativa correta)
	
	É voltado principalmente para arquivos binários (alternativa incorreta)
	
	Resposta correta!
Este método é voltado para arquivos texto, e não binários. Ele recebe um Path como parâmetro (que representa o arquivo a ser lido) e faz a leitura de todas as linhas desse arquivo. Cada linha é armazenada em um objeto String e uma lista desses objetos (List<String>) é retornada pelo método.
5) Suponha que você deseje acessar um arquivo já existente para escrever dados, mas que você não queira que o conteúdo já existente no arquivo seja substituído. Qual código você deve usar para conseguir isso?
* Marque todas as alternativas que respondem o enunciado da questão
	
	Files.newOutputStream("/tmp/file.txt", StandardOpenOption.WRITE, StandardOpenOption.APPEND)(alternativa correta)
	
	Files.newOutputStream("/tmp/file.txt") (alternativa incorreta)
	
	Files.newOutputStream ("/tmp/file.txt", StandardOpenOption.WRITE, StandardOpenOption.TRUNCATE) (alternativa incorreta)
	
	Files.newBufferedWriter("/tmp/file.txt", StandardOpenOption.WRITE, StandardOpenOption.APPEND) (alternativa correta)
	
	Files.newOutputStream ("/tmp/file.txt", StandardOpenOption.READ, StandardOpenOption.APPEND) (alternativa incorreta)
	
	Resposta correta!
É preciso usar as chamadas Files.newOutputStream() ou Files.newBufferedWriter() passando como parâmetro dois enums de StandardOpenOption: WRITE, para indicar que o arquivo será aberto para escrita; e APPEND, para indicar que os dados a serem escritos devem ser colocados depois dos dados já existentes. A opção TRUNCATE apaga os dados existentes.
Parte inferior do formulário
Parte inferior do formulário

Outros materiais