1,同时可以读写,写写,但读写时不能删除。运行下面代码并通过输出验证
package test; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.nio.file.Files; public class TestFile { public static void main( String[] args ) { final TestFile testFile = new TestFile(); new Thread(new Runnable() { @Override public void run() { for(int i = 0; i< 10; i++){ try { Thread.sleep( 100 ); } catch ( InterruptedException e ) { e.printStackTrace(); } testFile.write( Thread.currentThread() + "- line - "+i +"\n"); } } }).start(); new Thread(new Runnable() { @Override public void run() { for(int i = 0; i< 10; i++){ try { Thread.sleep( 100 ); } catch ( InterruptedException e ) { e.printStackTrace(); } testFile.read(); } } }).start(); new Thread(new Runnable() { @Override public void run() { for(int i = 0; i< 10; i++){ try { Thread.sleep( 100 ); } catch ( InterruptedException e ) { e.printStackTrace(); } testFile.write( Thread.currentThread() + "- line - "+i +"\n"); } } }).start(); new Thread(new Runnable() { @Override public void run() { try { Thread.sleep( 500 ); Files.delete( new File( "d:/a.txt" ).toPath() ); } catch ( Exception e ) { //java.nio.file.FileSystemException: d:\a.txt: The process cannot access the file because it is being used by another process. e.printStackTrace(); } } }).start(); } private void write(String str){ try { FileOutputStream fos = new FileOutputStream( "d:/a.txt",true ); fos.write( str.getBytes() ); } catch ( Exception e ) { // TODO Auto-generated catch block e.printStackTrace(); } } private void read(){ try { FileInputStream fis = new FileInputStream( "d:/a.txt" ); BufferedReader br = new BufferedReader( new InputStreamReader( fis ) ); String str = br.readLine(); while(str != null){ System.out.println(str); str = br.readLine(); } } catch ( Exception e ) { // TODO Auto-generated catch block e.printStackTrace(); } } }
2,必须流关闭才能删除,rename(这个很特殊,win与linux下表现不同,getName()也很神奇)。外部流和内部类close效果一样。因为是委托代理组合,内部类的close
import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStreamWriter; public class TestFile { public static void main( String[] args ) { final TestFile testFile = new TestFile(); testFile.write( "test - line -1. \n" ); } private void write( String str ) { try { File file = new File( "d:/a.txt" ); FileOutputStream fos = new FileOutputStream( file, true ); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter( fos )); bw.write( str ); System.out.println(file.renameTo( new File( "d:/a1.txt" ) )); System.out.println(file.getName()+" delete result = " + file.delete()); bw.close(); fos.close(); System.out.println(file.renameTo( new File( "d:/a1.txt" ) )); System.out.println(file.getName()+" delete result = " + file.delete()); } catch ( Exception e ) { e.printStackTrace(); } } }
相关推荐
总的来说,Oracle的UTL_FILE包为开发者提供了一套完整的文件操作接口,可以在数据库环境中方便地处理文本文件,进行读写、复制、重命名和删除等操作。理解并熟练使用UTL_FILE,能够极大地提升数据库管理的效率,尤其...
以下是对`File`类以及文件读写、复制和图片下载的详细讲解。 1. **文件和文件夹的创建** 使用`File`类可以方便地创建新的文件或目录。例如,通过调用`createNewFile()`方法可以创建一个新文件,但需确保路径正确且...
但是,如果需要将内部文件共享给其他应用,建议使用`FileProvider`,它可以安全地提供文件的Uri,同时避免了权限问题。 总的来说,Android 13的读写权限变更使得开发者必须更加谨慎地处理文件操作,尤其是当涉及到...
该API允许程序员在C++环境下创建、读取、更新和删除FGDB中的地理数据,它与ArcGIS 10的GDB Schema相兼容。本文将详细介绍如何在Visual Studio 2019(VS2019)环境下编译FileGDB_API 1.5.2。 **1. 安装与配置** ...
本文将详细介绍如何在Android Studio中获取内部存储路径,创建文件夹,以及进行读写和删除文件的操作。 首先,获取内部存储路径通常使用Android的`getFilesDir()`或`getInternalStorageDirectory()`方法。`...
同时,对于大容量的U盘,可能需要分块读写以避免内存瓶颈。 总结,通过单片机配合CH375芯片实现U盘文件读写是一项综合性的任务,涵盖了硬件接口设计、文件系统理解和软件编程等多个方面。理解并掌握这些知识点,...
`File.Delete()`方法用于删除指定路径下的文件。这是一个非常直接的方法,只需提供文件路径即可执行删除操作: ```csharp File.Delete(@"c:\temp\uploads\newFile.txt"); ``` 此方法会立即删除文件,没有撤销机制...
"VBS读写及创建、删除文件" VBS(Visual Basic Scripting)是一种脚本语言,可以用来读写文件、创建文件、删除文件等操作。在本文中,我们将详细介绍VBS读写文件、创建文件、删除文件的方法。 读写文件 在VBS中,...
本文将深入探讨如何在C#中执行文件的读写操作,以及如何进行文件删除。 首先,让我们了解C#中用于文件操作的主要类:`System.IO`命名空间中的`File`和`StreamReader`、`StreamWriter`。`File`类提供了许多静态方法...
使用`File`类的方法`createNewFile()`创建文件,`mkdir()`或`mkdirs()`创建目录,`delete()`删除文件或目录。 ```java File newFile = new File(sdCardRoot, "new_file.txt"); newFile.createNewFile(); // ...
在C#编程语言中,File类是System.IO命名空间下的一个关键组件,它提供了大量用于读写、创建、移动和删除文件的静态方法。在这个"集合篇"中,我们将深入探讨C#中File类的各种操作,并通过源码分享来增强理解。 首先...
UTL_FILE 包是 Oracle 提供的一个文件操作包,主要用于读写文件和目录。该包的应用非常广泛,且非常实用,因为 Oracle 虽然有 SQL*Loader 可以将文本的内容读到数据库里,但是不能将数据库内容输出到文本。因此,在...
- `File`类提供了诸如`exists()`检查文件是否存在,`delete()`删除文件,`createNewFile()`创建新文件等方法。 7. **NIO(非阻塞I/O)**: - 自Java 7起,引入了NIO.2,提供更高效和更灵活的文件操作,如`Files`...
- 创建与删除文件权限: ```xml <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> ``` - 写入数据权限: ```xml ``` #### 四、具体的读写实现 1. **判断SDCard是否可用...
在这个命名空间下,`File`类是我们进行文件读写的主要工具。以下是一些基本操作的示例: 1. **新建TXT文件**: 使用`File.WriteAllText`方法可以创建新的TXT文件并写入内容。例如: ```csharp string content = ...
总之,C#提供了强大且易用的文件操作工具,通过`System.IO.File`和`System.IO.FileInfo`类,开发者能够方便地完成文件的读写、创建、删除、复制和移动等一系列操作,从而满足各种应用程序的需求。在实际编程中,结合...
File类并不直接涉及文件内容的读写,而是专注于文件对象的元数据管理。 1. **File类的构造方法** - `File(String pathname)`:根据给定的路径名创建File对象。 - `File(String parent, String child)`:使用指定...