Java文件流的available计算空字符吗,数据是一行一行的会返回什么
时间: 2024-04-03 19:31:11 浏览: 11
Java文件流的`available()`方法返回的是当前可用于读取的字节数,如果是空字符也会计算在内。对于一行一行的数据,`available()`方法会根据文件流的当前位置和文件大小计算可用于读取的字节数,而不是基于文件的行数计算可用字节数。因此,`available()`方法返回的值不一定与文件的行数相关。
相关问题
如果我已知textview的宽度和textsize以及padding,那么我要如何计算一行有多少字符,前提是不用在textview绘制前就能知道
可以通过以下公式来计算一行可以容纳多少个字符:
```
可容纳字符数 = (textview的宽度 - 左右padding) / 字符宽度
```
其中,左右padding可以通过`getPaddingLeft()`和`getPaddingRight()`方法获取,字符宽度可以通过`Paint`类中的`measureText()`方法来获取,具体代码如下:
```java
// 获取textview的宽度
int width = textView.getWidth();
// 获取左右padding
int paddingLeft = textView.getPaddingLeft();
int paddingRight = textView.getPaddingRight();
// 计算可用宽度
int availableWidth = width - paddingLeft - paddingRight;
// 获取Paint对象
Paint paint = textView.getPaint();
// 获取文字大小
float textSize = textView.getTextSize();
// 设置文字大小
paint.setTextSize(textSize);
// 计算字符宽度
float charWidth = paint.measureText("A");
// 计算可容纳字符数
int charCount = (int) (availableWidth / charWidth);
```
需要注意的是,上述方法计算出来的是大概的字符数,实际情况可能会略有出入,因为各种字体的字符宽度可能有所不同。如果需要更加精确的计算,可以考虑使用`StaticLayout`类来进行计算。
根据Java输入输出流的知识,编写程序,题目要求: (1) 键盘输入10个整数,从小到大进行排序。 (2) 接收键盘输入的字符串,用FileInputStream类将字符串写入文件,用FileOutputStream类读出文件内容显示在屏幕上。(文件存储位置和名字自行定义) (3)将一个文本文件的内容按行读出,每读出一行就顺序加上行号,并写入到另一个文件中。
好的,我可以回答关于Java输入输出流的问题。
(1) 这题需要使用数组和循环语句,先将10个整数读入数组中,再用循环语句进行排序,最后输出排序后的结果。可以参考如下代码:
```
import java.util.Scanner;
import java.util.Arrays;
public class SortNumber {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] nums = new int[10];
System.out.println("请输入10个整数:");
for(int i=0;i<nums.length;i++){
nums[i] = sc.nextInt();
}
Arrays.sort(nums);
System.out.println("排序后的结果为:");
for(int i=0;i<nums.length;i++){
System.out.print(nums[i] + " ");
}
}
}
```
(2) 首先需要用Scanner类从键盘上获取输入的字符串,再利用FileOutputStream类写入到文件中。读取文件内容则需要用FileInputStream类,最后输出显示在屏幕上。代码如下:
```
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Scanner;
public class InputOutputFile {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
System.out.println("请输入要写入文件的字符串:");
String s = sc.nextLine();
FileOutputStream fos = new FileOutputStream("test.txt");
fos.write(s.getBytes());
fos.close();
FileInputStream fis = new FileInputStream("test.txt");
byte[] data = new byte[fis.available()];
fis.read(data);
fis.close();
String content = new String(data);
System.out.println("文件内容为:" + content);
}
}
```
(3) 这题需要用到BufferedReader类和PrintWriter类。先从一个文件读取每行内容,加上行号后再写入到另一个文件中。代码如下:
```
import java.io.*;
public class ReadAndWriteFile {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new FileReader("test1.txt"));
PrintWriter pw = new PrintWriter(new FileWriter("test2.txt"));
String line;
int i=1;
while((line = br.readLine()) != null){
pw.println(i++ + " " + line);
}
pw.close();
br.close();
System.out.println("文件内容已按行号写入到test2.txt文件中。");
}
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)