estou aprendendo a manipular arquivo, mas não estou conseguindo criar uma pasta com arquivo, meu SO é MACOS
/*Cria arquivo*/
File file2 = new File("/Users/daysonmota/Desktop","arquivoTeste.txt");
boolean criou = file2.createNewFile();
System.out.println("criou novo arquivo: "+criou);
Faltou só vc invocar file2.getParentFile().mkdirs()
. Ficaria assim:
try {
File file2 = new File("/Users/daysonmota/Desktop", "arquivoTeste.txt");
file2.getParentFile().mkdirs();
boolean criou = file2.createNewFile();
System.out.println("criou novo arquivo: " + criou);
} catch (IOException e) {
e.printStackTrace();
}
Mas eu recomendo vc usar a API mais nova:
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
public class App {
public static void main(String... args) {
Path path = Path.of("/Users/daysonmota/Desktop", "arquivoTeste.txt");
try {
Files.createDirectories(path.getParent());
Files.createFile(path);
System.out.println("Arquivo criado!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Se quiser ver mais exemplos de como ler e escrever em arquivos de texto usando esta API, veja: https://wldomiciano.com/como-ler-e-escrever-arquivos-de-texto-em-java/
Aproveitando: Ao invés de usar o caminho absoluto tipo “Users/daysonmota/Desktop”, vc poderia tirar proveito das propriedades de sistema.
Tem uma propriedade que lhe dá o caminho da pasta do usuário independente de sistema operacional:
Path path = Path.of(System.getProperty("user.home"), "Desktop", "arquivoTeste.txt");
Além da user.home
, há várias outras com informações importantes. Vc pode ver todas aqui: https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/System.html#getProperties()