Java文件对象大小返回0
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java文件对象大小返回0相关的知识,希望对你有一定的参考价值。
System.out.print("1");
System.out.println(ts.getComponent());
System.out.println(ts.getTransferable().getTransferData(DataFlavor.javaFileListFlavor));
String dir = ts.getTransferable().getTransferData(DataFlavor.javaFileListFlavor).toString();
File file = new File(dir);
System.out.println(file.getName());
System.out.println(file.getPath());
System.out.println(file.getTotalSpace());
long num = file.length();
System.out.println(num);
产量
1javax.swing.JTable[,0,0,556x64,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@1baabbd6,flags=251658568,maximumSize=,minimumSize=,preferredSize=,autoCreateColumnsFromModel=true,autoResizeMode=AUTO_RESIZE_SUBSEQUENT_COLUMNS,cellSelectionEnabled=false,editingColumn=-1,editingRow=-1,gridColor=javax.swing.plaf.ColorUIResource[r=35,g=35,b=36],preferredViewportSize=java.awt.Dimension[width=450,height=400],rowHeight=16,rowMargin=0,rowSelectionAllowed=true,selectionBackground=DerivedColor(color=57,105,138 parent=nimbusSelectionBackground offsets=0.0,0.0,0.0,0 pColor=57,105,138,selectionForeground=DerivedColor(color=255,255,255 parent=nimbusLightBackground offsets=0.0,0.0,0.0,0 pColor=255,255,255,showHorizontalLines=false,showVerticalLines=false]
[C:UsersYeDesktopSpotify.lnk]
Spotify.lnk]
[C:UsersYeDesktopSpotify.lnk]
0
尽管使用少量文件进行测试,我仍然不知道文件大小是多少
您可能正在检查目录的长度或指定的File
不存在。
从File.length
的文档中,它返回:
此抽象路径名表示的文件的长度(以字节为单位),如果文件不存在,则为
0L
。某些操作系统可能会返回0L
以获取表示系统相关实体(如设备或管道)的路径名。
问题似乎与你提供给File
构造函数的路径字符串有关。值[C:UsersYeDesktopSpotify.lnk]
不是您尝试访问的文件的File
构造函数的有效路径名。这在file.getName()
的print语句输出中是可见的,Spotify.lnk]
是Spotify.lnk
而不是getTransferData(DataFlavor.javaFileListFlavor).toString()
。您尝试获取大小的文件对象是名为Spotify.lnk的新文件**] **,其大小为0。
我不知道你是否有任何其他方法来获取 String dirTemp = ts.getTransferable().getTransferData(DataFlavor.javaFileListFlavor).toString();
dir = dirTemp.substring(1, dirTemp.length() - 1);
// Then create the file using this dir String.
File file = new File(dir);
以外的文件名,但你可以尝试使用以下代码清理文件名:
getTransferData()#toString()
这对于你正在获得的toString()
的当前输出是有效的,但是如果有人改变了ts.getTransferable().getTransferData(DataFlavor.javaFileListFlavor)
实现,则可能不起作用。
编辑:
正如@ MichaelA.Schaffrath正确指出的那样,List<File>
返回的对象实际上是一个File
。因此,甚至不需要再次构建新的List
对象。只需将返回的值转换为File
并使用qazxswpoi对象的第一个值。
以上是关于Java文件对象大小返回0的主要内容,如果未能解决你的问题,请参考以下文章
java.io.file对象中获取文件长度时 调用length方法 返回的是文件占用空间大小.如何获取文件自身的大小呢?