use*_*184 0 java jfilechooser file
我有一个方法fileUpload()打开FileChooser-Menu.如果我选择一个文件,那么绝对路径和文件大小写在控制台上.首先我只尝试这个:
System.out.println(file.getAbsolutePath()); // Print: C:\Users\Anonym XY\Desktop\test.txt\C:\Users\Anonym XY\Desktop\test.txt
System.out.println(file.length()); // Print: "0"
Run Code Online (Sandbox Code Playgroud)
但是对于绝对路径,我得到绝对路径,但双重打印?!Oo和文件大小我到这里0,这是假大小.
如果我这样:
System.out.println(fileChooser.getSelectedFile().length()); // Print: "15747840"
Run Code Online (Sandbox Code Playgroud)
然后我得到正确的文件大小.
我的整个方法:
public void fileUpload() {
JFileChooser fileChooser = new JFileChooser();
if(fileChooser.showOpenDialog(null)==JFileChooser.APPROVE_OPTION) {
File file = new File(fileChooser.getSelectedFile() ,fileChooser.getSelectedFile().getAbsolutePath());
System.out.println("Path: " + file.getAbsolutePath()); // Print: "Path: C:\Users\Anonym XY\Desktop\test.txt\C:\Users\Anonym XY\Desktop\test.txt"
System.out.println("Filesize: " + fileChooser.getSelectedFile().length()); // Print: "Filesize: 15747840"
System.out.println("Filesize: " + file.length()); // Print: "Filesize: 0"
}else if(fileChooser.showOpenDialog(null)==JFileChooser.ERROR_OPTION) {
System.out.println("Error");
}
}
Run Code Online (Sandbox Code Playgroud)
错误在这一行:
File file = new File(fileChooser.getSelectedFile(), fileChooser.getSelectedFile().getAbsolutePath());
Run Code Online (Sandbox Code Playgroud)
它本质上是做什么的:它将选定文件与它自身结合起来:作为父项和子项,所以你得到路径"加倍".
以下解决了这个问题:
File file = fileChooser.getSelectedFile();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1302 次 |
| 最近记录: |