java直接从硬盘读取a.txt
时间: 2023-10-10 21:08:00 浏览: 116
可以使用Java的IO类库中的FileInputStream类来实现从硬盘读取文件。以下是一个示例代码:
```
import java.io.*;
public class ReadFile {
public static void main(String[] args) {
try {
FileInputStream fileInputStream = new FileInputStream("a.txt");
int data;
while ((data = fileInputStream.read()) != -1) {
System.out.print((char) data);
}
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
此代码将打开名为“a.txt”的文件并读取其中的内容。它使用while循环读取文件中的每个字节,并使用System.out.print()方法在控制台上输出每个字符。最后,一定要调用close()方法关闭文件输入流,以释放资源。
相关问题
1. 在硬盘中创建以下目录和文件结构 src |-edu |-hue |-jk |-Student.java testset |-dir1 |-file1.txt |-dir2 其中file1.txt为普通文本文件。 2. 创建一个Student类,包结构如上所示。类中有5个属性: id(String),name(String),sex(boolean), score(int), deptno(int) 3. 创建toString函数,输出Student内容,以制表符分割。 4. 读取file1.txt文件,每一行创建一个Student对象实例。实例列表存放在ArrayList容器中。 5. 遍历ArrayList容器,并将输出写入到一个新的文件file2.txt中。file2.txt文件位于dir2目录中。 6. 正确捕获处理IOException, FileNotFoundException异常。
以下是Java代码实现:
1. 在硬盘中创建目录和文件结构
```java
import java.io.File;
public class FileStructure {
public static void main(String[] args) {
String rootPath = "/Users/user/Desktop";
File src = new File(rootPath + "/src/edu/hue/jk/Student.java");
File testsetDir1 = new File(rootPath + "/testset/dir1");
File testsetDir2 = new File(rootPath + "/testset/dir2");
// 创建目录和文件
try {
src.getParentFile().mkdirs();
src.createNewFile();
testsetDir1.mkdirs();
testsetDir2.mkdirs();
new File(testsetDir1, "file1.txt").createNewFile();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
2. 创建Student类
```java
public class Student {
private String id;
private String name;
private boolean sex;
private int score;
private int deptno;
public Student(String id, String name, boolean sex, int score, int deptno) {
this.id = id;
this.name = name;
this.sex = sex;
this.score = score;
this.deptno = deptno;
}
@Override
public String toString() {
return id + "\t" + name + "\t" + (sex ? "男" : "女") + "\t" + score + "\t" + deptno;
}
}
```
3. 读取文件,创建Student对象实例
```java
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class ReadFile {
public static void main(String[] args) {
String filePath = "/Users/user/Desktop/testset/dir1/file1.txt";
ArrayList<Student> students = new ArrayList<>();
try {
File file = new File(filePath);
BufferedReader reader = new BufferedReader(new FileReader(file));
String line;
while ((line = reader.readLine()) != null) {
String[] arr = line.split("\t");
Student student = new Student(arr[0], arr[1], Boolean.parseBoolean(arr[2]), Integer.parseInt(arr[3]), Integer.parseInt(arr[4]));
students.add(student);
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
for (Student student : students) {
System.out.println(student);
}
}
}
```
4. 遍历ArrayList容器,并将输出写入到file2.txt中
```java
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
public class WriteFile {
public static void main(String[] args) {
String filePath = "/Users/user/Desktop/testset/dir2/file2.txt";
ArrayList<Student> students = new ArrayList<>();
// 读取文件,创建Student对象实例
try {
File file = new File("/Users/user/Desktop/testset/dir1/file1.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
String line;
while ((line = reader.readLine()) != null) {
String[] arr = line.split("\t");
Student student = new Student(arr[0], arr[1], Boolean.parseBoolean(arr[2]), Integer.parseInt(arr[3]), Integer.parseInt(arr[4]));
students.add(student);
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
// 写入文件
try {
File file = new File(filePath);
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
for (Student student : students) {
writer.write(student.toString() + "\n");
}
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
5. 异常处理
```java
import java.io.*;
public class ExceptionHandling {
public static void main(String[] args) {
// 读取文件,创建Student对象实例
String filePath1 = "/Users/user/Desktop/testset/dir1/file1.txt";
ArrayList<Student> students = new ArrayList<>();
try {
File file = new File(filePath1);
BufferedReader reader = new BufferedReader(new FileReader(file));
String line;
while ((line = reader.readLine()) != null) {
String[] arr = line.split("\t");
Student student = new Student(arr[0], arr[1], Boolean.parseBoolean(arr[2]), Integer.parseInt(arr[3]), Integer.parseInt(arr[4]));
students.add(student);
}
reader.close();
} catch (FileNotFoundException e) {
System.err.println("找不到文件:" + filePath1);
e.printStackTrace();
} catch (IOException e) {
System.err.println("读取文件失败:" + filePath1);
e.printStackTrace();
}
// 写入文件
String filePath2 = "/Users/user/Desktop/testset/dir2/file2.txt";
try {
File file = new File(filePath2);
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
for (Student student : students) {
writer.write(student.toString() + "\n");
}
writer.close();
} catch (IOException e) {
System.err.println("写入文件失败:" + filePath2);
e.printStackTrace();
}
}
}
```
a)持久化层,访问硬盘上的文件。 DeviceItemDAO类,读取文本文件device.txt的内容。
持久化层是指在计算机程序中,负责数据的持久存储和管理的部分。它通常位于数据源(如数据库、文件系统等)和业务逻辑层之间,用于将内存中的数据模型转换为适合于持久存储的数据格式,或者相反,将存储的数据转换为程序可以使用的数据模型。持久化层的主要目的是为了解耦数据访问代码和业务逻辑代码,使得代码更加清晰,同时提高数据处理的效率和安全性。
在Java中,一个简单的持久化操作可以通过读写文件来实现。例如,`DeviceItemDAO` 类可以负责从硬盘上的文本文件`device.txt`中读取数据。这个类可能包含方法来打开文件、读取文件内容、处理数据以及关闭文件等。通过封装这些操作,可以使得业务逻辑层不必关心底层的文件读写细节,从而使得整个应用程序更加模块化和易于维护。
以下是`DeviceItemDAO`类可能包含的一些基本方法:
```java
import java.io.*;
public class DeviceItemDAO {
// 读取设备信息的文本文件
private String filePath = "device.txt";
/**
* 读取文件内容
* @return 文件内容字符串
*/
public String readDeviceInfo() {
StringBuilder contentBuilder = new StringBuilder();
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = reader.readLine()) != null) {
contentBuilder.append(line).append(System.lineSeparator());
}
} catch (IOException e) {
e.printStackTrace();
}
return contentBuilder.toString();
}
// 其他与设备信息持久化相关的操作...
}
```
阅读全文