标签: java-io

从文件夹中读取和删除文件

我正在尝试编写一个程序来从文件夹中读取每个文件,在读取文件中的内容后,该文件应该被删除。我可以编写程序来分别从文件夹中读取文件并从文件夹中删除文件,但无法将它们集成到一个程序中。

java java-io

5
推荐指数
1
解决办法
6963
查看次数

Path.toFile() 和 new File(pathString) 的不同行为

我在 Windows 中安装了网络驱动器(samba 服务器)。

我在该驱动器中有一个文件,我想在 Java 程序中读取该文件。

在我尝试使用以下方法读取文件之前:

Paths.get(basePath, fileName).toFile()
Run Code Online (Sandbox Code Playgroud)

但由于文件不存在而失败。文件就在那里,路径也很好。

然后我尝试了以下有效的代码:

String path = Paths.get(basePath, fileName).toAbsolutePath().toString()
File file = new File(path)
Run Code Online (Sandbox Code Playgroud)

两种方法有什么区别吗?是否需要任何安全设置?

更新

因此,在我使用第二部分(有效的部分)之后,我回到原来的部分(原样)来验证调试,这次它有效了。我用同一目录中的另一个文件尝试了它,但失败了。看起来很奇怪,但我会检查更多。

java file network-drive java-io java.nio.file

5
推荐指数
1
解决办法
1731
查看次数

使用 Java 创建引用链接

java.nio.Files.createSymbolicLink用于创建符号链接。我可以通过 SDK 创建引用链接(类似于cp --reflink=[WHEN]),还是需要执行到底层操作系统?

java java-io

5
推荐指数
1
解决办法
232
查看次数

Java IO输入流在读取标准输出和外部C程序的标准错误时阻塞

我几天前在这里发布了同样的问题(Java使用输入流读取外部程序的标准输出),我在阅读时遇到了一些块的优点(while(is.read())!= -1)),但我仍然无法解决问题.

在阅读了这个类似问题的答案后,

Java InputStream阻塞读取 (尤其是Guss发布的答案),

我开始相信,如果程序是交互式的,那么使用is.read()!= -1条件循环输入流是不起作用的(即它需要来自用户的多个输入并在后续输入时显示附加输出,并且只有在给出显式退出命令时,程序才会退出).我承认我对多线程知之甚少,但我认为我需要的是一种在需要用户输入时立即暂停输入流线程(stdout,stderr各一个)的机制,并在输入后恢复提供以防止阻止.以下是我当前的代码,该代码在指示的行上遇到了一个块:

EGMProcess egm = new EGMProcess(new String[]{directory + "/egm", "-o",
                "CasinoA", "-v", "VendorA", "-s", "localhost:8080/gls/MessageRobot.action ",
                "-E", "glss_env_cert.pem", "-S", "glss_sig_cert.pem", "-C", "glsc_sig_cert.pem",
                "-d", "config", "-L", "config/log.txt", "-H", "GLSA-SampleHost"}, new String[]{"PATH=${PATH}"}, directory);

    egm.execute();

    BufferedReader stdout = new BufferedReader(new InputStreamReader(egm.getInputStream()));
    BufferedReader stderr = new BufferedReader(new InputStreamReader(egm.getErrorStream()));

    EGMStreamGobbler stdoutprocessor = new EGMStreamGobbler(stdout, egm);
    EGMStreamGobbler stderrprocessor = new EGMStreamGobbler(stderr, egm);

    BufferedWriter stdin = new BufferedWriter(new OutputStreamWriter(egm.getOutputStream()));


    stderrprocessor.run(); //<-- the block occurs here!
    stdoutprocessor.run();


    //EGM/Agent test …
Run Code Online (Sandbox Code Playgroud)

java java-io

4
推荐指数
1
解决办法
2687
查看次数

用Java修改隐藏文件

我有一个用户下载的文件,然后我在java中执行一个命令来隐藏文件:

Runtime.getRuntime().exec("attrib +H myFile.txt");
Run Code Online (Sandbox Code Playgroud)

现在我需要访问该隐藏文件,但我得到了

java.io.FileNotFoundException: myFile.txt (Access is denied)
Run Code Online (Sandbox Code Playgroud)

如果文件未被隐藏,则此方法有效,但文件需要隐藏,因此用户不会修改它.那么我该如何修改隐藏文件呢?有没有办法在Java中这样做?

谢谢你的想法.

java file java-io

4
推荐指数
1
解决办法
4682
查看次数

删除Android中的文件

我有一个包含很多文件的目录.我想删除整个目录以及其中的所有文件.

我希望我的代码等到该目录中的每个文件(包括目录本身)在执行下一个命令之前被删除.

我怎么等 我的代码是

public void wipeMemoryCard() 
    {
        File deleteMatchingFile = new File(Environment 
                .getExternalStorageDirectory().toString()); 
        try { 
            filenames = deleteMatchingFile.listFiles(); 
            if (filenames != null && filenames.length > 0) 
            { 
                content = true;
                for (File tempFile : filenames) 
                { 
                    if (tempFile.isDirectory()) 
                    { 
                        wipeDirectory(tempFile.toString()); 
                        tempFile.delete();

                    } 
                    else 
                    {                       
                        File file = new File(tempFile.getAbsolutePath()); 
                        file.delete(); 
                    } 
                } 
            } 
            else 
            {   

                deleteMatchingFile.delete(); 
                Toast("No files to Delete");
            } 
        } 

        catch (Exception e) 
        { 
           e.printStackTrace();
        }
        if(content == true)
        {
              if (filenames == null && filenames.length == …
Run Code Online (Sandbox Code Playgroud)

java android java-io android-file

4
推荐指数
1
解决办法
8752
查看次数

java.nio.file.FileAlreadyExistsException如何在java7中解决这个问题

我正在编写一个代码我用java nio api创建一个目录,我的代码片段是

   Path target = Paths.get(""+folder_path+xx[0]);
    Set<PosixFilePermission> perms = null;
    if(xx[2].toLowerCase().equals("read"))
     perms =PosixFilePermissions.fromString("r--------");
    if(xx[2].toLowerCase().equals("read/write"))
    {
       perms =PosixFilePermissions.fromString("rw-------");
    }
    FileAttribute<Set<PosixFilePermission>> attr = PosixFilePermissions.asFileAttribute(perms);

    Files.createDirectory(target, attr);
Run Code Online (Sandbox Code Playgroud)

但这是一个错误

java.nio.file.FileAlreadyExistsException: /home/ritesh/Desktop/userA

我知道的原因是因为一个目录已经具有相同的名称,但我想用我的代码目录生成的目录覆盖userA目录如何完成这个?

java nio java-io java-7

4
推荐指数
1
解决办法
5969
查看次数

是否需要在android中关闭参数/参数InputStream?

所有流和bufferedReader都需要关闭我的问题是如果流和bufferedReader在一个方法内,参数/参数也需要关闭吗?

示例普通代码:

InputStream i = entity.getContent();
i.close();
Run Code Online (Sandbox Code Playgroud)

问:如果它在一个仅传递的方法的参数内部会怎么样?

public void doDownload(InputStream i, BufferedReader b) {
    i.close();
    b.close();
}
Run Code Online (Sandbox Code Playgroud)

即使输入流和bufferedreader只是一个参数而没有对象,我也应该关闭它吗?

java android java-io

4
推荐指数
1
解决办法
1353
查看次数

Java I / O-模拟System.console()的输入

我正在为在练习中创建的程序编写JUnit。这意味着测试需要涵盖尽可能多的情况,而我对程序中某些内容的实现方式没有任何影响。此外,该程序还会运行一个无限循环,在该循环中,在某一点上它需要用户输入一些内容。
对于JUnit测试,我在另一个程序中运行该程序,Thread并在JUnit中模拟用户输入Thread

到目前为止,如果程序从中读取用户输入,则一切正常System.in,因为此流可以轻松替换。但是也存在程序交互的可能性,System.console()当前我的测试无法涵盖。

是否有可能模拟的输入System.console(),例如通过用另一个流替换其输入源?

(注意:JUnit测试必须使用Java 6且没有任何外部库(JUnit和Hamcrest除外)。)

编辑:不幸的是,我无法更改要测试的程序的类。

java junit java-io

4
推荐指数
1
解决办法
1518
查看次数

将stax XML写入String

我正在使用stax来创建我的Web应用程序所需的XML文档.目前我在这样的文件中创建我的XML:

    XMLOutputFactory factory = XMLOutputFactory.newInstance();
    String output=null;
     try 
     {
             XMLStreamWriter writer = factory.createXMLStreamWriter(
                     new FileWriter("C:\\Junk\\xmlDoc.xml"));
             writer.writeStartDocument();
             writer.writeStartElement("TagName1");
             writer.writeAttribute("AAA", "BBB");
             writer.writeEndElement();
             writer.writeEndDocument();             
             writer.flush();
             writer.close();
     } 
     catch (XMLStreamException e) 
     {
         e.printStackTrace();
     } 
     catch (IOException e) 
     {      
        e.printStackTrace();
     } 
Run Code Online (Sandbox Code Playgroud)

但是xml文件不是我想要的,我需要在一个中创建我的XML String.不幸的是我无法弄清楚OutputStream我需要哪个对象而不是FileWriter

java xml stax java-io

4
推荐指数
1
解决办法
3465
查看次数

标签 统计

java ×10

java-io ×10

android ×2

file ×2

android-file ×1

java-7 ×1

java.nio.file ×1

junit ×1

network-drive ×1

nio ×1

stax ×1

xml ×1