import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Stream;

public class Main {

public static void main(String[] args) {

Path basePath = Path.of("");
try {
Path path = Paths.get("output");
Files.createDirectories(path);
System.out.println("Directory created: " + path);
} catch (IOException e) {
e.printStackTrace();
}

System.out.println("Base: " + basePath.toAbsolutePath());
System.out.println();
System.out.println("Directory listing ");
try (Stream<Path> paths = Files.list(basePath.toAbsolutePath())) {
paths.forEach(System.out::println);
} catch (IOException e) {
throw new RuntimeException(e);
}
System.out.println();
System.out.println("Directory Walk");
try (Stream<Path> paths = Files.walk(basePath.toAbsolutePath())) {
paths.forEach(System.out::println);
} catch (IOException e) {
throw new RuntimeException(e);
}

useFile("output/filename.txt");
usePath("output/pathname.txt");

}

private static void useFile(String fileName){
File file = new File(fileName);
boolean fileExists = file.exists();

System.out.printf("File '%s' %s%n", fileName,
fileExists ? "exists. " : "does not exist.");

if (fileExists) {
System.out.println("Deleting File: " + fileName);
fileExists= !file.delete();
}

if (!fileExists) {
try {
file.createNewFile();
} catch (IOException e) {
throw new RuntimeException(e);
}
System.out.println("Created File: " + fileName);
if (file.canWrite()) {
System.out.println("Would write to file here");
}
}
}

private static void usePath(String fileName){
Path path = Path.of(fileName);
boolean fileExists = Files.exists(path);

System.out.printf("File '%s' %s%n", fileName,
fileExists ? "exists. " : "does not exist.");

if (fileExists) {
System.out.println("Deleting File: " + fileName);
try {
Files.delete(path);
fileExists = false;
} catch (IOException e) {
e.printStackTrace();
}
}

if (!fileExists) {
try {
Files.createFile(path);

System.out.println("Created File: " + fileName);
if (Files.isWritable(path)) {
Files.writeString(path, """

Here is some data,
For my file,
Just to prove,
Using the Files class and path are better!
""");
Files.readAllLines(path).forEach(System.out::println);
}
} catch (IOException e) {
throw new RuntimeException(e);
}


}

}




}
C:Usersnetadmin.jdksopenjdk-23.0.2binjava.exe "-javaagent:C:Program FilesJetBrainsIntelliJ IDEA Community Edition 2024.2.4libidea_rt.jar=60438" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath C:UsersnetadminIdeaProjectsJava_Coding_130FileListingsoutproductionFileListings Main
Directory created: output
Base: C:UsersnetadminIdeaProjectsJava_Coding_130FileListings

Directory listing
C:UsersnetadminIdeaProjectsJava_Coding_130FileListings.gitignore
C:UsersnetadminIdeaProjectsJava_Coding_130FileListings.idea
C:UsersnetadminIdeaProjectsJava_Coding_130FileListingsFileListings.iml
C:UsersnetadminIdeaProjectsJava_Coding_130FileListingsout
C:UsersnetadminIdeaProjectsJava_Coding_130FileListingsoutput
C:UsersnetadminIdeaProjectsJava_Coding_130FileListingssrc

Directory Walk
C:UsersnetadminIdeaProjectsJava_Coding_130FileListings
C:UsersnetadminIdeaProjectsJava_Coding_130FileListings.gitignore
C:UsersnetadminIdeaProjectsJava_Coding_130FileListings.idea
C:UsersnetadminIdeaProjectsJava_Coding_130FileListings.idea.gitignore
C:UsersnetadminIdeaProjectsJava_Coding_130FileListings.ideamisc.xml
C:UsersnetadminIdeaProjectsJava_Coding_130FileListings.ideamodules.xml
C:UsersnetadminIdeaProjectsJava_Coding_130FileListings.ideavcs.xml
C:UsersnetadminIdeaProjectsJava_Coding_130FileListings.ideaworkspace.xml
C:UsersnetadminIdeaProjectsJava_Coding_130FileListingsFileListings.iml
C:UsersnetadminIdeaProjectsJava_Coding_130FileListingsout
C:UsersnetadminIdeaProjectsJava_Coding_130FileListingsoutproduction
C:UsersnetadminIdeaProjectsJava_Coding_130FileListingsoutproductionFileListings
C:UsersnetadminIdeaProjectsJava_Coding_130FileListingsoutproductionFileListingsMain.class
C:UsersnetadminIdeaProjectsJava_Coding_130FileListingsoutput
C:UsersnetadminIdeaProjectsJava_Coding_130FileListingsoutputfilename.txt
C:UsersnetadminIdeaProjectsJava_Coding_130FileListingsoutputpathname.txt
C:UsersnetadminIdeaProjectsJava_Coding_130FileListingsoutputtest.txt
C:UsersnetadminIdeaProjectsJava_Coding_130FileListingssrc
C:UsersnetadminIdeaProjectsJava_Coding_130FileListingssrcMain.java
File 'output/filename.txt' exists.
Deleting File: output/filename.txt
Created File: output/filename.txt
Would write to file here
File 'output/pathname.txt' exists.
Deleting File: output/pathname.txt
Created File: output/pathname.txt

Here is some data,
For my file,
Just to prove,
Using the Files class and path are better!

Process finished with exit code 0