`

java读取隐藏文件

    博客分类:
  • JAVA
阅读更多
java读写隐藏文件与普通的文件略有不同,如下:

如果使用:
FileOutputStream out = new FileOutputStream(file);
就会报错:拒绝访问
java.io.FileNotFoundException: **.txt (拒绝访问。)  
at java.io.FileOutputStream.open(Native Method)

即使我们设置写权限也一样。可以看到java调用本地方法open,

所以就不能调用open方法,而改调用openAppend方法,就是追加:
所以我们可以使用new FileOutputStream(file, true)  来实现写入,但是只能追加写入,而不能进行修改操作。
   
publicvoid appendDatatoHiddenFile(String file) {
       try {
           FileOutputStream out = new FileOutputStream(file, true);
           PrintStream p = new PrintStream(out);
           for (int i = 0; i < 10; i++)
              p.println("hello: " + i );
       } catch (FileNotFoundException e) {
           e.printStackTrace();
       }
    }
 

那么如何任意操作“隐藏文件”呢?使用使用RandomAccessFile
简单介绍一下RandomAccessFile:

输入流FileInputStream和输出流 FileOutputStream,实现的是对磁盘文件的顺序读写,而且读写要分别创建不同对象。相比之下RandomAccessFile类则可对文件实现随机读写操作。

如某个文件有30个字节,读取数据过程中,从20-30读取,用skip( )//跳过方法。
RandomAccessFile类,即可以充当输入也可充当输出流。可以看作节点流。 RandomAccessFile对象的文件位置指针遵循下面的规律;新建RandomAccessFile对象的文件位置指针位于文件的开头处;每次读写操作之后,文件位置的指针都相应后移到读写的字节数;可以通过getFilePointer方法来获得文件位置指针的位置,通过seek方法来设置文件指针的位置。


RandomAccessFile常用方法: 
1.         RandomAccessFile (”路径+文件名”, String“rw”/”r”)两个参数
2.         Void close( ) 
3.         Long length( ) 
4.         Void seek( ) 
5.         Long getFilePointer( )获得当前指针位置,默认为0
6.         Int read( )从文件当前位置读取一个字节
7.         int read (byte[]b) 
8.         int read (byte[]b,int off,int len) 
9.         Final boolean readBoolean( )从文件当前位置读取boolean类型的一个字节  boolean在内存占1/8
10.     Final_ char readChar( )从文件中读取2个字节。
11.     Final int readInt( )从文件中读取4个字节。
12.     ##Final String readLine( )从文件中读取一行后转为String。
13.     Void write(byte[]b)将字节数组B中的数据写到文件中。
14.     Void write(byte[]b,int off,int len)将 len 个字节从指定字节数组写入到此文件,并从偏移量 off 处开始。
15.     Void write(int b)将指定的数据写到文件中。
16.     Final void writeBoolean(boolean v)将boolean类型的值按单字节的形式写到文件中0或1
17.     Final void writeChar(int v)将char值按2个字节写入到文件中
18.     Final void writeChars(String s)将字符串按字符方式写入到文件中
19.     Final void writeInt(int v)按四个字节将 int 写入该文件,先写高字节
20.     skipBytes(long i):从前往后拨弄指示器的位置,就是跳过多少个字节读取数据。
21.     Void seek(long p): 对指示器作决定性的定位,用于从后往前拨弄指示器的位置。对于seek方法,拥有skipBytes( )的功能,但seek( )在使用过程非常影响系统的开销。只有万不得已的情况下使用。


来个列子:
  
 publicvoid randomAccessFile(String file) throws Exception {
       RandomAccessFile f = new RandomAccessFile(file, "rw");
       System.out.println("File.lelngth:" + (f.length()) + "B");
       System.out.println("File PointPosition:" + f.getFilePointer());
       f.seek(f.length());
       f.writeBoolean(true);
       f.writeBoolean(false);
       f.writeChar('a');
       f.writeChars("hello!");
       System.out.println("File Length;" + (f.length()) + "B");
 
       f.seek(0);
       System.out.println(f.readBoolean());
       System.out.println(f.readBoolean());
       
       System.out.println(f.readLine());
       f.close();
    }
 
在来个处理中文的例子:
   
publicvoid chinesewrit(String toAppend) {
 
       try {
           // 写入
           int i = 0;
           String record = new String();
           String toCn = null;
           // 处理中文问题
           toCn = new String(toAppend.getBytes("GBK"), "ISO8859_1");
 
           RandomAccessFile rf = new RandomAccessFile("c:\\aaa.txt", "rw");
           rf.seek(rf.length());
           rf.writeBytes(toCn + "\n");
           rf.close();
           // 读取
           RandomAccessFile rf2 = new RandomAccessFile("c:/aaa.txt", "r");
           String outCn = null;
           while ((record = rf2.readLine()) != null) {
              i++;
              // 处理中文问题
              outCn = new String(record.getBytes("ISO8859_1"), "GBK");
 
              System.out.println("Line " + i + ":" + outCn);
           }
           rf2.close();
       } catch (Exception e) {
           e.printStackTrace();
       }
    }
 

说明上面的例子都是append得,如果要覆盖的话,就seek(0),然后写入!
欢迎转载:请标明出处进销存第一门户网www.jxc114.com
文章地址:http://www.jxc114.com/?action-viewspace-itemid-2901

分享到:
评论

相关推荐

    java中读取目录下指定的文件

    例如,`list()`方法可以返回目录中所有非隐藏文件和目录的名称列表: ```java String[] files = directory.listFiles(); for (String fileName : files) { System.out.println("文件名:" + fileName); } ``` ...

    通用JAVA手机文件隐藏及取消隐藏功能源码

    例如,将文件名前缀更改为`.`可以将其隐藏在Unix/Linux或Android系统中,因为这些系统将`.`开头的文件视为隐藏文件。 2. **Java文件操作API**: - `java.io.File`类是Java中用于文件操作的核心类。它提供了创建、...

    将文件隐藏在图片中

    这类工具通常会先读取图片的原始像素数据,然后将待隐藏文件的二进制数据编码并插入到像素值中,最后保存为一个新的图片文件,其中包含了隐藏的数据。 使用这种技术需要注意几个关键点: 1. **安全性**:虽然文件...

    java读写文件,Java操作文件

    System.out.println("是否是隐藏文件:" + f.isHidden()); System.out.println("文件的最后修改日期为:" + new Date(f.lastModified())); } else { f.createNewFile(); // 如果文件不存在,则创建 } ``` 这段...

    Java 遍历文件夹内文件

    但要注意,这个方法不包括隐藏文件。 ```java File directory = new File("C:\\example\\folder"); File[] files = directory.listFiles(); for (File file : files) { System.out.println(file.getName()); } ```...

    蒸发密令.zip隐藏文件,神仙都找不到~~

    在IT领域,隐藏文件是一种常见的安全措施,用于保护敏感数据不被未经授权的用户访问。"蒸发密令.zip"这个文件名暗示了这是一个压缩包,其中可能包含了一些被隐藏的文件,使得它们对于普通用户来说难以察觉。让我们...

    java中隐藏数据信息

    在Java中,我们可以使用`java.io.RandomAccessFile`类来读写BMP文件的各个部分。通过逐个访问每个像素的RGB值,我们可以将额外的数据编码到这些值中。例如,如果原始RGB值为(255, 255, 255),我们可以将隐藏的一位...

    java版信息隐藏软件

    这涉及到对Java核心库的调用,如I/O流处理(用于读写文件)、数据结构操作(如数组和列表)以及可能的加密库(如Java Cryptography Architecture,JCA)来增强信息的安全性。测试是确保软件质量的重要环节,开发者...

    java实现dex文件方法字节码隐藏

    当我们谈论“java实现dex文件方法字节码隐藏”时,我们实际上是在讨论如何在Android应用的编译或打包过程中,对特定的方法进行混淆或者隐藏,以防止恶意攻击者通过反编译工具(如dex2jar、JD-GUI等)轻易地分析和...

    java读取.xlxs Excel文件

    File file = new File("C:/Users/... //读取第一列数据 XSSFCell two = xssfRow.getCell(1); //读取第二列数据 XSSFCell three = xssfRow.getCell(2); //读取第三列数据 System.out.println(three); } } }

    一次代码重构之旅-快速读写xml文件工具类封装

    在描述中提到的博客文章“一次代码重构之旅-快速读写xml文件工具类封装”,作者分享了如何通过Java进行XML操作的优化,将原始的XML处理代码整合到一个工具类中,提供简洁易用的API。在阅读该博客文章的过程中,我们...

    java去掉txt文本的bom头信息

    在Java编程中,处理文本文件时,我们可能会遇到BOM(Byte Order Mark)头信息的问题。BOM是Unicode编码格式中的一个特殊字符,用于标识文件的编码类型,常见于UTF-8、UTF-16和UTF-32等格式。在某些情况下,如读取或...

    java 只显示文件中指定的字符

    `java.io`包提供了读取文件的基本类,如`FileReader`、`BufferedReader`和`Scanner`。这些类可以帮助我们读取文件内容。例如,我们可以使用`BufferedReader`来逐行读取文件: ```java import java.io.*; public ...

    java编写的文件搜索器

    3. **文件过滤**:Java允许我们创建自定义的`FilenameFilter`或使用预定义的`FileFilter`,如`FileFilter:hidden`(隐藏文件)或`FileFilter::directories`(仅目录)。在搜索器中,我们可以根据文件名、扩展名或...

    java实现文件下载,并弹出保存对话框(Excel)

    Java实现文件下载,尤其是处理Excel文件,涉及到多个层面的技术细节,包括但不限于响应头的设置、文件读写、错误处理,以及前端与后端的协调。通过深入理解这些技术要点,开发者可以构建出既高效又安全的文件下载...

    JFrame文件上传Java_swing应用

    用户通过JFileChooser选择文件后,应用可以读取选定文件的路径,然后使用FileInputStream或其他输入流类读取文件内容,可能还需要处理文件上传的进度条、错误处理等。 4. **日期选择**:在Swing中,JCalendar或...

    JSP中java文件操作大全

    "是隐藏文件" : "不是隐藏文件" + " "); out.println("文件的最后修改日期为:" + new Date(f.lastModified()) + " "); } ``` 以上代码不仅展示了如何获取文件属性,还通过`out.println()`方法将这些信息...

    JAVA入门编辑器(读写文件两接口一类实现)

    在Java编程领域,读写文件是一项基础且重要的任务,它涉及到数据的持久化存储和读取。本项目名为“JAVA入门编辑器(读写文件两接口一类实现)”,旨在为初学者提供一个简单的文本编辑器实现,通过将读写文件功能封装...

    获取目录文件属性信息,Java源代码.rar

    本主题将深入探讨如何使用Java来获取目录文件的属性信息,包括只读、存档、隐藏等元数据。 首先,Java提供了一个名为`java.io.File`的类,它是处理文件和目录的主要工具。`File`类提供了许多方法来获取文件的各种...

Global site tag (gtag.js) - Google Analytics