11.4

package qimoxiangmu;

import javax.swing.*;

import java.io.*;

public class ChooseFile
{
    public static void main(String[] args)
    {
    
      JFileChooser fileChooser = new JFileChooser();

      fileChooser.setFileSelectionMode(
         JFileChooser.FILES_ONLY );
         //显示打开文件对话框
      int result = fileChooser.showOpenDialog( null );
 
      // user clicked Cancel button on dialog
      if ( result == JFileChooser.CANCEL_OPTION )
         return;

      File fileName = fileChooser.getSelectedFile();
      
      System.out.println("您选择了:" + fileName.getName());
    }
}

运行结果如下:

您选择了:9. 山花绽放.lnk

package qimoxiangmu;

import java.io.IOException;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.LinkOption;
import java.nio.file.Path;
import java.nio.file.PathMatcher;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;


public class FileFinder extends SimpleFileVisitor<Path> {



    @Override
    public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
            throws IOException {
        Path name=file.getFileName();
        System.out.println("Examining "+name);
        if(matcher.matches(name)){
            foundPaths.add(file);
        }
        return FileVisitResult.CONTINUE;
    }

    private PathMatcher matcher;
    
    public ArrayList<Path> foundPaths=new ArrayList<>();
    
    public FileFinder(String pattern){
        matcher=FileSystems.getDefault().getPathMatcher("glob:"+pattern);    
    }
    
    public static void main(String[] args) {
        Path fileDir=Paths.get("D:\test");
        FileFinder finder=new FileFinder("*.java");
        try {
            Files.walkFileTree(fileDir, finder);
            ArrayList<Path> foundFiles=finder.foundPaths;
            if(foundFiles.size()>0){
                for (Path path : foundFiles) {
                System.out.println(path.toRealPath(LinkOption.NOFOLLOW_LINKS));
                }
            }
            else {
                System.out.println("No files were found!");
            }
            
        } catch (IOException e) {
        
            e.printStackTrace();
        }

    }

}

运行结果如下:

No files were found!

package qimoxiangmu;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.Arrays;
import java.util.List;

public class FilesTest {
    public static void main(String[] args) {
        // copy file
        Path source = Paths.get("D:/Temp/line1.bmp");
        Path target = Paths.get("D:/Temp/backup.bmp");
        try {
            Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);
        } catch (IOException ex) {
            ex.printStackTrace();
        }

        Path source2 = Paths.get("D:/Temp/backup.bmp");
        Path target2 = Paths.get("D:/123data/backup2.bmp");
        try {
            Files.move(source2, target2, StandardCopyOption.REPLACE_EXISTING);
        } catch (IOException ex) {
            ex.printStackTrace();
        }

        
        // write and read to a text file
        Path textFile = Paths.get("D:/Temp/speech.txt");
        Charset charset = Charset.forName("US-ASCII");
        String line1 = "Easy read and write";
        String line2 = "with java.nio.file.Files";
        List<String> lines = Arrays.asList(line1, line2);
        try {
            Files.write(textFile, lines, charset);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        List<String> linesRead = null;
        try {
            // read back
            linesRead = Files.readAllLines(textFile, charset);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        
        if (linesRead != null) {
            for (String line : linesRead) {
                System.out.println(line);
            }
            
        }
    }
    
}

运行结果如下:

Easy read and write
with java.nio.file.Files

package qimoxiangmu;
import java.io.*;
import java.util.ArrayList;

public class FileTest {

    public static void main(String[] args) throws IOException {
        
         File file = new File("c:\windows");
         if(file.isFile()) { // 是否为文件
             System.out.println(" 文件"); 
             System.out.print(
                   file.canRead() ? "可读" : "不可读"); 
             System.out.print(
                   file.canWrite() ? "可写" : "不可写"); 
             System.out.println(
                   file.length() + "字节"); 
         } 
         else { 
             // 列出所有的文件及目录
             File[] files = file.listFiles(); 
             ArrayList<File> fileList = 
                                 new ArrayList<File>(); 
             for(int i = 0; i < files.length; i++) { 
                 // 先列出目录 
                 if(files[i].isDirectory()) { //是否为目录
                     // 取得路径名
                     System.out.println("[" + 
                             files[i].getPath() + "]"); 
                 }
                 else {
                     // 文件先存入fileList,待会再列出??
                     fileList.add(files[i]); 
                 }
             } 

             // 列出文件 
             for(File f: fileList) {
                 System.out.println(f.toString());
             }
             System.out.println(); 
         } 
        
        
        //以当前路径来创建一个File对象
        file = new File(".");
        //直接获取文件名,输出一点
        System.out.println(file.getName());
        //获取相对路径的父路径可能出错,下面代码输出null
        System.out.println(file.getParent());
        //获取绝对路径
        System.out.println(file.getAbsoluteFile());
        //获取上一级路径
        System.out.println(file.getAbsoluteFile().getParent());
        //在当前路径下创建一个临时文件
        File tmpFile = File.createTempFile("aaa", ".txt", file);
        //指定当JVM退出时删除该文件
        tmpFile.deleteOnExit();
        //以系统当前时间作为新文件名来创建新文件
        File newFile = new File(System.currentTimeMillis() + "");
        System.out.println("newFile对象是否存在:" + newFile.exists());
        //以指定newFile对象来创建一个文件
        newFile.createNewFile();
        //以newFile对象来创建一个目录,因为newFile已经存在,
        //所以下面方法返回false,即无法创建该目录
        newFile.mkdir();
        //使用list方法来列出当前路径下的所有文件和路径
        String[] fileList = file.list();
        System.out.println("======当前路径下所有文件和路径如下=====");
        for (String fileName : fileList) {
            System.out.println(fileName);
        }

        //listRoots静态方法列出所有的磁盘根路径。
        File[] roots = File.listRoots();
        System.out.println("======系统所有根路径如下=====");
        for (File root : roots) {
            System.out.println(root);
        }
    }
}

运行结果如下:

[c:windowsaddins]
[c:windowsappcompat]
[c:windowsapppatch]
[c:windowsAppReadiness]
[c:windowsassembly]
[c:windowscastdvr]
[c:windowsBoot]
[c:windowsBranding]
[c:windowsCbsTemp]
[c:windowsContainers]
[c:windowsCursors]
[c:windowsdebug]
[c:windowsDefender]
[c:windowsdiagnostics]
[c:windowsDiagTrack]
[c:windowsDigitalLocker]
[c:windowsDownloaded Program Files]
[c:windowsELAMBKUP]
[c:windowsen-US]
[c:windowsFavicon_ICON]
[c:windowsFonts]
[c:windowsGameBarPresenceWriter]
[c:windowsGlobalization]
[c:windowsHelp]
[c:windowsIdentityCRL]
[c:windowsIME]
[c:windowsImmersiveControlPanel]
[c:windowsINF]
[c:windowsInputMethod]
[c:windowsInstaller]
[c:windowsjava]
[c:windowsL2Schemas]
[c:windowsLanguageOverlayCache]
[c:windowsLenovo]
[c:windowsLiveKernelReports]
[c:windowsLogs]
[c:windowsMedia]
[c:windowsMicrosoft.NET]
[c:windowsMigration]
[c:windowsminidump]
[c:windowsModemLogs]
[c:windowsNetease]
[c:windowsOCR]
[c:windowsOffline Web Pages]
[c:windowspanther]
[c:windowsPCHEALTH]
[c:windowsPerformance]
[c:windowsPLA]
[c:windowsPolicyDefinitions]
[c:windowsPrefetch]
[c:windowsPrintDialog]
[c:windowsProvisioning]
[c:windowsRegistration]
[c:windows escache]
[c:windowsResources]
[c:windowsSchCache]
[c:windowsschemas]
[c:windowssecurity]
[c:windowsServiceProfiles]
[c:windowsServiceState]
[c:windowsservicing]
[c:windowsSetup]
[c:windowsShellComponents]
[c:windowsShellExperiences]
[c:windowsSKB]
[c:windowsSoftwareDistribution]
[c:windowsSpeech]
[c:windowsSpeech_OneCore]
[c:windowssymbols]
[c:windowsSystem]
[c:windowsSystem32]
[c:windowsSystemApps]
[c:windowsSystemResources]
[c:windowsSysWOW64]
[c:windowsTAPI]
[c:windowsTasks]
[c:windowsTemp]
[c:windowsTextInput]
[c:windows racing]
[c:windows wain_32]
[c:windowsVss]
[c:windowsWaaS]
[c:windowsWeb]
[c:windowsWinSxS]
[c:windowszh-CN]
c:windowsacct.txt
c:windowsarea.txt
c:windowsauthsel.txt
c:windowsAvsOpt.txt
c:windowsa_domain.txt
c:windowsfsvc.exe
c:windowsootstat.dat
c:windowsCNI.TAG
c:windowscore.ver
c:windowsCoreCountrySpecific.xml
c:windowscsup.txt
c:windowsdiagerr.xml
c:windowsdiagwrn.xml
c:windowsDirectX.log
c:windowseap.txt
c:windowseapkeep.txt
c:windowsedu_look.bmp
c:windowsexplorer.exe
c:windowsguest.txt
c:windowsHelpPane.exe
c:windowshh.exe
c:windowsinfo.txt
c:windowslanguage.txt
c:windowsmachineinfo.sav
c:windowsMFGSTAT.zip
c:windowsmib.bin
c:windowsmsginfosize.txt
c:windows otepad.exe
c:windowsNvContainerRecovery.bat
c:windowsNvTelemetryContainerRecovery.bat
c:windowsODBC.INI
c:windowsPFRO.log
c:windowsPLDDATA.XML
c:windowsProductInfo.ini
c:windows egedit.exe
c:windowssetupact.log
c:windowssetuperr.log
c:windowssplwow64.exe
c:windowssystem.ini
c:windows wain_32.dll
c:windowsvbaddin.ini
c:windowswin.ini
c:windowsWindowsShell.Manifest
c:windowsWindowsUpdate.log
c:windowswinhlp32.exe
c:windowsWMSysPr9.prx
c:windowswrite.exe

.
null
D:JAVA新建文件夹qimoxiangmu.
D:JAVA新建文件夹qimoxiangmu
newFile对象是否存在:false
======当前路径下所有文件和路径如下=====
.classpath
.project
.settings
1608220060270
aaa5574514488376449911.txt
bin
src
======系统所有根路径如下=====
C:
D:
F:

package qimoxiangmu;
import java.io.IOException;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.PathMatcher;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;


public class FileVisitorDemo extends SimpleFileVisitor<Path> {

    
    @Override
    public FileVisitResult postVisitDirectory(Path dir, IOException exc)
            throws IOException {
        System.out.println("Just visited "+dir);
        return FileVisitResult.CONTINUE;
    }

    @Override
    public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs)
            throws IOException {
        System.out.println("Aoout to visit "+dir);
        return FileVisitResult.CONTINUE;
    }

    @Override
    public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
            throws IOException {
        if(attrs.isRegularFile()){
            System.out.println("Regular File:");
        }
        System.out.println(file);
        return FileVisitResult.CONTINUE;
    }

    @Override
    public FileVisitResult visitFileFailed(Path file, IOException exc)
            throws IOException {
        System.err.println(exc.getMessage());
        return FileVisitResult.CONTINUE;
    }

    public static void main(String[] args) {
        Path fileDirPath=Paths.get("D:\test");
        FileVisitorDemo visitor=new FileVisitorDemo();
        try {
            Files.walkFileTree(fileDirPath, visitor);
        } catch (IOException e) {
            
            e.printStackTrace();
        }
        
        
        
    }

}

运行结果如下:

D: est

package qimoxiangmu;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardWatchEventKinds;
import java.nio.file.WatchEvent;
import java.nio.file.WatchKey;
import java.nio.file.WatchService;
import java.util.HashMap;
import java.util.Map;


public class FileWatcherDemo {

    /**
     * @param args
     */
    public static void main(String[] args) {
        //创建一个WatchService对象,此对象将用于管理特定文件夹的变动信息队列。
        try(WatchService service=FileSystems.getDefault().newWatchService()) {
            //此集合可保存多个文件夹的监控信息,当前只使用了一个
            Map<WatchKey, Path> keyMap=new HashMap<>();
            Path path=Paths.get("D:\test");
            //设置WatchService对象管理的内部队列,将保存指定的文件夹的创建、删除和修改事件信息
            //返回的WatchKey对象可用于从事件队列中获取事件对象
            WatchKey key=path.register(service, StandardWatchEventKinds.ENTRY_CREATE,
                    StandardWatchEventKinds.ENTRY_DELETE,StandardWatchEventKinds.ENTRY_MODIFY);
            keyMap.put(key, path);
            
            do {
                //开始监控,阻塞等待,当感兴趣的事件发生时,take()方法返回。
                key=service.take();
                Path eventDir=keyMap.get(key);
                //从事件队列中提取所有的事件
                for (WatchEvent<?> event : key.pollEvents()) {
                    //是什么类型的事件?
                    WatchEvent.Kind<?> kind=event.kind();
                    //是哪个对象发生了变动?
                    Path eventPath=(Path)event.context();
                    System.out.println(eventDir+":"+kind+":"+eventPath);
                }
            } while (key.reset()); //reset方法重置此对象,让其可以重新接收信息
            
        } catch (Exception e) {
            
        }

    }

}
package qimoxiangmu;
import java.io.IOException;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class PathTest {
    public static void main(String[] args) {
        FileSystem fileSystem=FileSystems.getDefault();
        Path examplePath=fileSystem.getPath("c:/windows");
        System.out.println(examplePath.toString());
        Path path = Paths.get("D:/Temp/pathTest.txt");
        System.out.println("path name count:" + path.getNameCount());
        System.out.println(path.getName(0));
        System.out.println(path.getName(1));
        
        System.out.println("filename: " + path.getFileName());
        System.out.println("parent: " + path.getParent());
        Path parent = path.getParent();
        System.out.println("parent: " + parent.getParent().getParent());
        
        
        try {
            Files.deleteIfExists(path);
            Files.createFile(path);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        
        Path newDir = Paths.get("D:/Temp/newDir");
        try {
            if (Files.notExists(path)) {
                Files.createDirectory(newDir);
                
            }
            System.out.println("isDirectory: " + Files.isDirectory(newDir));
            System.out.println("size  : " + Files.size(newDir));
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        System.out.println("DONE");
        
    }
    
}

运行结果如下:

c:windows
path name count:2
Temp
pathTest.txt
filename: pathTest.txt
parent: D:Temp
parent: null
isDirectory: true
size  : 0
DONE

原文地址:https://www.cnblogs.com/cdl-sunshine/p/14152417.html