Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
solaris 10,java 6,file.exists无法查看现有文件_Java_Solaris_Ramdisk - Fatal编程技术网

solaris 10,java 6,file.exists无法查看现有文件

solaris 10,java 6,file.exists无法查看现有文件,java,solaris,ramdisk,Java,Solaris,Ramdisk,我有一个将数百万个小文件组成tar归档的代码,因此我决定使用solaris机器的/tmp文件夹。然后我创建了一个ramdisk,现在使用我创建的ramdisk(/ramdata)代替/tmp。。 以下是我为完成任务所做的: 首先,我尝试在ramdisk中创建tar归档,然后移动到目标目录,但是当我这样做时,当文件存在时,java的File.exists()无法返回true。然后,我将目录更改为磁盘上的一个目录(opt/dist/dist1/cdrepo)以放置我的tar文件,并且成功地在那里创建

我有一个将数百万个小文件组成tar归档的代码,因此我决定使用solaris机器的/tmp文件夹。然后我创建了一个ramdisk,现在使用我创建的ramdisk(/ramdata)代替/tmp。。 以下是我为完成任务所做的:

首先,我尝试在ramdisk中创建tar归档,然后移动到目标目录,但是当我这样做时,当文件存在时,java的File.exists()无法返回true。然后,我将目录更改为磁盘上的一个目录(opt/dist/dist1/cdrepo)以放置我的tar文件,并且成功地在那里创建了tar文件,但文件存在时file.exists()再次未能返回true

然后我看到了这篇文章,我相应地修改了代码,以便NFS将重置缓存,但它也不起作用

有人能提出任何解决方案或想法来解释为什么会发生这种情况,以及我如何解决这个问题吗?谢谢大家

我使用的是Java6U21,它是Solaris 10机器

以下是我尝试的最终代码:我知道代码中有一些我以前尝试过的符号,比如我实例化一个File对象并用fileExists变量检查它的存在性…,这肯定不会像预期的那样工作,但是因为现在我只是想看到File.exists()的真实结果,所以我忽略了它们。主要的例外是czf.take_md5方法行,其第一行是
FileInputStream fis=newfileinputstream(filename)

输出为:

    /ramdata/cdtemp_125_1 tarlaniyor...
tar -cf /opt/dist/dist1/cdrepo/125_cd_1.tar   /ramdata/cdtemp_125_1 ----- komutu ile tarlama yapilacak.......
system exit value:  0
LS CDREPO ICIN BASARILI OLARAK CALISTI...
Absolute Path : /opt/dist/dist1/cdrepo/125_cd_1.tar 
         Path : /opt/dist/dist1/cdrepo/125_cd_1.tar 
Canonical Path : /opt/dist/dist1/cdrepo/125_cd_1.tar 
is File : false
Length : 0
is Hidden : false
dosya derepoda degil...
java.io.FileNotFoundException: /opt/dist/dist1/cdrepo/125_cd_1.tar  (No such file or directory)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:106)
        at java.io.FileInputStream.<init>(FileInputStream.java:66)
        at staticcdbuildernewver.CreateZipFile.take_md5(CreateZipFile.java:34)
        at staticcdbuildernewver.OracleSideDbOps.CreateZipFileFromSingleFolder(OracleSideDbOps.java:723)
只是一次尝试

if(f2.exists())
     System.err.println("Dosya cdrepoda...");
else {
     System.err.println("dosya derepoda degil...");
     f2.getParentFile().mkdirs();
}
只是一次尝试

if(f2.exists())
     System.err.println("Dosya cdrepoda...");
else {
     System.err.println("dosya derepoda degil...");
     f2.getParentFile().mkdirs();
}

所有的问题都在于定义tarName变量时的额外空间。。只要去掉多余的空间就行了。。一切都会好起来的

所有问题都在于tarName变量定义中的额外空间。。只要去掉多余的空间就行了。。一切都会好起来的

是否Solaris用户没有足够的访问权限来获取目录中的文件列表?我从ssh连接窗口使用此java程序,并与root用户连接。。是否存在root用户没有目录列表权限的情况?Ramdisks没有安装NFS。我不擅长Linux UNIX系统,我只是看到了这篇文章并尝试了以防万一……)你能用truss运行这个命令,看看是否有什么意义。是不是Solaris用户没有足够的访问权限来获取目录中的文件列表?我从ssh连接窗口使用这个java程序,并与root用户连接。。是否存在root用户没有目录列表权限的情况?Ramdisks没有安装NFS。我不擅长Linux UNIX系统,我只是看到了这篇文章并尝试了以防万一……)你能不能用truss运行这个命令,看看有没有什么意义。所有需要的目录都是预先创建的。。但是我希望f2.exists()返回true,在这种情况下,当它为false时,您只需执行一个操作,这意味着我仍然会有错误。。如果我误解了,请澄清..所有需要的目录都是预先创建的。。但是我希望f2.exists()返回true,在这种情况下,当它为false时,您只需执行一个操作,这意味着我仍然会有错误。。如果我误解了,请澄清。。
if(f2.exists())
     System.err.println("Dosya cdrepoda...");
else {
     System.err.println("dosya derepoda degil...");
     f2.getParentFile().mkdirs();
}